lldb如何display一个数组的某段范围

我使用lldb调试一个C程序
程序里面有个很大的数组 我想观察它的第1024个元素到第1030个元素的变化情况

如果直接display这个元素的话 会把数组的前256个元素显示出来
有没有什么办法可以满足我的要求

谢谢

另外..如果您知道gdb里面如何实现,也请告诉我。
另外..如果不介意的话,请告诉我这样的资料可以从哪里找到。

阅读 6.6k
2 个回答

假设你这个数组叫做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 希望对你有用:)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进