Debug_demo/qstring.py (17 lines of code) (raw):
import lldb
def utf16string_summary(value, *rest):
str_data = value.GetChildMemberWithName("d").GetChildMemberWithName("data")
if str_data is None:
return '""'
length_vo = value.GetChildMemberWithName("d").GetChildMemberWithName("size")
length = length_vo.GetValueAsUnsigned(0)
if length == 0:
return '""'
data = str_data.GetPointeeData(0, length)
error = lldb.SBError()
bytes = data.ReadRawData(error, 0, 2*length)
return '"%s"' % (bytes.decode('utf-16').encode('utf-8'))
def __lldb_init_module(debugger, *rest):
# print 'registering QString'
summary = lldb.SBTypeSummary.CreateWithFunctionName("qstring.utf16string_summary")
summary.SetOptions(lldb.eTypeOptionHideChildren)
debugger.GetDefaultCategory().AddTypeSummary( lldb.SBTypeNameSpecifier("QString", False), summary )