默认不支持显示QString,需要对QString进行注册。
1、home目录下新建.lldb文件夹,放入qstring.py文件,文件内容如下:
import lldb
def utf16string_summary(value, *rest):
d = value.GetChildMemberWithName("d")
length = d.GetChildMemberWithName("size").GetValueAsSigned()
offset = d.GetChildMemberWithName("offset").GetValueAsSigned()
address = d.GetValueAsUnsigned() + offset
if length == 0:
return '""'
error = lldb.SBError()
# UTF-16, so we multiply length by 2
bytes = value.GetProcess().ReadMemory(address, length * 2, error)
if bytes is None:
return '""'
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 )
2、home目录下创建.lldbinit文件,内容如下:
command script import ~/.lldb/qstring.py
3、重启xcode,编译成功后lldb窗口可见 registering QString,大功告成。