使用LLDB脚本简化打印复杂数据的操作

上次提到用了LLDB脚本来扩展一些功能。 这次是简化打印复杂数据的操作。
 
不知道大家都没有遇到过在gdb和lldb里输出一个类时困扰,常常要一个个属性展开下去,或者调用提供函数来检查。分享一个使用LLDB脚本来简化变量输出的方法。
 
以输出Element的属性为例,其下面的属性很多,我们其实只想知道属性名称和值就可以了。数据结构展开如下:

 


如果使用lldb脚本,只需要输入 p attr就可以查看了,只是输出的结果格式化的不太好。

 


脚本可以到这里下载。支持四种数据输出: WTF::String, WTF::AtomicString, WebCore::QualifiedName, WebCore::Attribute。


脚本的写法很简单,目前对字串的输出使用的是memory read方法,效果不太好。主要因为StringImpl中的m_data8是放在一个union中的,导致lldb对它不能使用printf(), 另外在代码中查找时也是按序号处理,先找到union,再找m_data8的。
 
详细的内容可以参考LLDB的文档:
 
LLDB Data Formatters
 
*注意脚本要按上次的方式添加到.lldbinit里面去,然后重启XCode就可以了。
 
GDB有类似的功能,没有研究。如果觉得有用,可以从这里入手研究一下:
  
用gdb打印libcxx容器内的内容

 

转载请注明出处:http://blog.csdn.net/horkychen

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值