我使用lldb调试一个C程序
程序里面有个很大的数组 我想观察它的第1024个元素到第1030个元素的变化情况
如果直接display这个元素的话 会把数组的前256个元素显示出来
有没有什么办法可以满足我的要求
谢谢
另外..如果您知道gdb里面如何实现,也请告诉我。
另外..如果不介意的话,请告诉我这样的资料可以从哪里找到。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
假设你这个数组叫做hugeAry
gdb:
(gdb) display hugeAry[1023]@7
3: hugeAry[1023]@7 = {1023, 1024, 1025, 1026, 1027, 1028, 1029}
关键是display后面的address@len这个表达式。
它表示address之后偏移在len以内的元素。
lldb应该差不多?等下我试了之后再来修改答案……
更新:
试了下lldb,很悲催地发现lldb没有这个功能。不过找到了一个hack的方式:
http://stackoverflow.com/questions/7062173/lldb-equivalent-of-gdbs-operator-in-xcode-4-1
lldb:
(lldb) type summary add -s "${var[1023-1030]}" "int *"
(lldb) frame variable hugeAry
(int *) hugeAry = 0x0000000000cba010 [1023,1024,1025,1026,1027,1028,1029,1030]
这个应该是修改了打印的格式来实现的。不过这个不是display,只是显示数组中的一片而已,不能在每次停下来的时候显示结果。
另,关于如何找到相关资料,gdb我是看的这个
用GDB调试程序
lldb我是临时抱佛脚查的……
这里有份gdb和lldb之间比较的checklist:http://lldb.llvm.org/lldb-gdb.html 希望对你有用:)