lldb中默认没有对于QString的支持,需要自己添加。
1. 在用户目录下创建~/.lldb文件夹,并在文件夹中创建`qstring.py`文件。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. 创建 ~/.lldbinit文件,写入一条命令`command script import ~/.lldb/qstring.py`
3. 重启Xcode即可生效
参考
https://github.com/tgebarowski/lldb-scripts