summaryrefslogtreecommitdiff
path: root/solenv/lldb
diff options
context:
space:
mode:
authorTor Lillqvist <tml@iki.fi>2013-01-06 23:55:42 +0200
committerTor Lillqvist <tml@iki.fi>2013-01-07 00:06:25 +0200
commitad887fc3bf6237cfaf08e8f28a4f960b38e83365 (patch)
tree03173864739597455364d0ca79f8784ad8a69030 /solenv/lldb
parent6da90944b5134d65bfbd7dcaf024956aa139efc1 (diff)
Add lldb pretty-printers for UniStringData and String
Change-Id: I17c7a42d6e401f21f04440ee14616b07bfa0068e
Diffstat (limited to 'solenv/lldb')
-rw-r--r--solenv/lldb/libreoffice/LO.py34
1 files changed, 28 insertions, 6 deletions
diff --git a/solenv/lldb/libreoffice/LO.py b/solenv/lldb/libreoffice/LO.py
index 594af092e167..352bb3141533 100644
--- a/solenv/lldb/libreoffice/LO.py
+++ b/solenv/lldb/libreoffice/LO.py
@@ -29,14 +29,10 @@
# script sys.path[:0] = [os.path.expanduser('~/lo/ios/solenv/lldb/libreoffice')]
# script import LO
-# type summary add --skip-references --python-function LO.rtl_uString_summary rtl_uString
-# type summary add --skip-pointers --skip-references --python-function LO.rtl_OUString_summary rtl::OUString
import lldb
def rtl_uString_summary(valobj, dict):
- e = lldb.SBError()
-
# print "valobj = " + str(valobj) + ", valobj.GetData() = " + str(valobj.GetData()) + ", valobj.GetTypeName() = " + str(valobj.GetTypeName())
# As we don't use --skip-pointers when doing the "type summary add" for this function,
@@ -49,6 +45,28 @@ def rtl_uString_summary(valobj, dict):
buffer_ptr = buffer.AddressOf();
+ return sal_unicode_string(buffer_ptr, length)
+
+def rtl_OUString_summary(valobj, dict):
+ return rtl_uString_summary(valobj.GetChildMemberWithName('pData'), dict)
+
+def UniStringData_summary(valobj, dict):
+ if valobj.TypeIsPointerType():
+ return UniStringData_summary(valobj.Dereference(), dict)
+
+ length = valobj.GetChildMemberWithName('mnLen').GetValueAsUnsigned(0)
+ buffer = valobj.GetChildMemberWithName('maStr')
+
+ buffer_ptr = buffer.AddressOf();
+
+ return sal_unicode_string(buffer_ptr, length)
+
+def String_summary(valobj, dict):
+ return UniStringData_summary(valobj.GetChildMemberWithName('mpData'), dict)
+
+def sal_unicode_string(buffer_ptr, length):
+ e = lldb.SBError()
+
s = '"'
i = 0
while i < length:
@@ -74,7 +92,11 @@ def rtl_uString_summary(valobj, dict):
return s
-def rtl_OUString_summary(valobj, dict):
- return rtl_uString_summary(valobj.GetChildMemberWithName('pData'), dict)
+# Automatically install the above summary functions when this is loaded
+def __lldb_init_module(debugger, dict):
+ debugger.HandleCommand("type summary add --skip-references --python-function LO.rtl_uString_summary rtl_uString")
+ debugger.HandleCommand("type summary add --skip-pointers --skip-references --python-function LO.rtl_OUString_summary rtl::OUString")
+ debugger.HandleCommand("type summary add --skip-references --python-function LO.UniStringData_summary UniStringData")
+ debugger.HandleCommand("type summary add --skip-pointers --skip-references --python-function LO.String_summary String")
# vim:set shiftwidth=4 softtabstop=4 expandtab: