开发者社区 问答 正文

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

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

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

谢谢

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

展开
收起
a123456678 2016-06-06 19:40:55 2599 分享 版权
1 条回答
写回答
取消 提交回答
  • 假设你这个数组叫做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 希望对你有用:)

    2019-07-17 19:29:19
    赞同 展开评论
问答分类:
问答地址: