【问题标题】:GDB structure outputGDB 结构输出
【发布时间】:2009-10-14 17:45:15
【问题描述】:

我已经很长时间没有使用 gdb 了,这感觉像是一个基本问题。

我正在尝试观察结构的变化,而不是在特定点中断并将其打印出来,我宁愿让应用程序正常运行并给我一个特定点的结构快照。考虑一个执行操作(打印结构)而不是暂停执行的断点。

我有兴趣一次性而不是逐步查看结构的更改。我可以通过printf得到我想要的,但是gdb要优雅得多。

更新:感谢您的所有回复。我想在特定点观看一个结构,而命令解决方案正是我所需要的。这很有帮助。

【问题讨论】:

    标签: c gdb


    【解决方案1】:

    一个不错的方法是使用相关命令设置断点,例如:

    break main.c:100
    commands 1
    print data_structure
    continue
    end
    

    这会在到达断点 1 时运行两个命令 print data_structurecontinue

    【讨论】:

    • 或者更好 - 设置一个观察点,这样你就可以捕捉到结构被修改的所有地方。
    • 正确-但原始问题使用了两次“特定点”一词。通常,一个结构会经常被许多代码段所触及,但只有一个特定的代码是有意义的。
    【解决方案2】:

    如果你的数据结构持有的信息可能会被几行代码改变,你也可以使用gdb的watch。请注意,它非常慢,因此应谨慎使用。命令部分是一样的。

    (gdb) break main
    Breakpoint 1 at 0x80483b5:
    (gdb) run
    Breakpoint 1, main ()
    (gdb) watch data_structure
    Hardware watchpoint 2: data_structure
    (gdb) commands 2
    Type commands for when breakpoint 2 is hit, one per line.
    End with a line saying just "end".
    > print data_structure
    > continue
    > end
    (gdb) continue
    

    【讨论】:

      猜你喜欢
      • 2016-11-23
      • 1970-01-01
      • 1970-01-01
      • 2023-01-12
      • 2012-09-19
      • 1970-01-01
      • 2016-03-29
      • 2011-08-21
      • 2017-02-07
      相关资源
      最近更新 更多