在Xcode中产看QString的数据

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

posted @ 2015-08-29 13:18  Jax.Li  阅读(667)  评论(1编辑  收藏  举报