V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
aheadlead
V2EX  ›  问与答

lldb(gdb 也可以)如何 display 一个数组的某段范围

  •  
  •   aheadlead · 2014-10-26 13:56:23 +08:00 · 4807 次点击
    这是一个创建于 3668 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我使用lldb调试一个C程序
    (没用gdb的原因是yosemite里面没有...懒得装)
    程序里面有个很大的数组 我想观察它的第1024个元素到第1030个元素的变化情况

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

    谢谢

    另外..如果您知道gdb里面如何实现,也请告诉我。
    另外..如果不介意的话,请告诉我这样的资料可以从哪里找到。
    6 条回复    2014-10-26 18:17:04 +08:00
    Phoinikas
        1
    Phoinikas  
       2014-10-26 14:15:56 +08:00   ❤️ 1
    不知道如何实现,不过资料推荐你去stackoverflow找,肯定有
    Esay
        2
    Esay  
       2014-10-26 14:36:40 +08:00   ❤️ 1
    简单搜索了一下,lldb 中可以指定每种类型输出的样式

    http://lldb.llvm.org/varformats.html

    比如,对于每个 int 数组输出 20 - 21 个元素:

    type summary add --summary-string "${var[20-21]}" "int []"



    Happy hacking~
    aheadlead
        3
    aheadlead  
    OP
       2014-10-26 14:52:31 +08:00
    @Esay 感谢
    我也看到了这个 但如果我要同时看两个int数组的话应该怎么办
    Esay
        4
    Esay  
       2014-10-26 15:06:03 +08:00   ❤️ 1
    长度不同的话,可以分别指定,如果相同的话就还得好好读读文档了(好像可以写个 Python 处理一下吧)
    aheadlead
        5
    aheadlead  
    OP
       2014-10-26 15:26:07 +08:00
    @Esay 手动感谢!
    nabla
        6
    nabla  
       2014-10-26 18:17:04 +08:00
    gdb的话,display应该也可以用 /FMT:
    display /4gx 0x7fffffffe968
    可以以hex形式显示该地址处4个giant word(8 bytes)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2804 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 09:10 · PVG 17:10 · LAX 01:10 · JFK 04:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.