• 在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

  • 相关阅读:
    window常见事件onload
    BOM顶级对象window
    模拟京东快递单号查询案例
    [Hibernate] one-to-one
    Katy Perry
    [Java] int 转换为BigDecimal
    [easyUI] datagrid 数据格 可以进行分页
    [easyUI] 树形菜单 tree
    [easyUI] lazyload 懒加载
    [easyUI] autocomplete 简单自动完成以及ajax从服务器端完成
  • 原文地址:https://www.cnblogs.com/vectorli/p/4769031.html
Copyright © 2020-2023  润新知