GDB结构输出

时间:2009-10-14 17:45:16

标签: c gdb

我长时间没有使用gdb,这感觉就像一个基本问题。

我正在尝试观察一个结构,因为它发生了变化,而不是在某个特定点打破并打印出来,我宁愿让应用程序正常运行,并在特定点给我一个结构的快照。想一个执行动作(打印结构)而不是暂停执行的断点。

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

更新:感谢您的回复。我想在特定点观察一个结构,命令解决方案就是我需要的。这非常有帮助。

2 个答案:

答案 0 :(得分:8)

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

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

每当达到断点1时,它会运行两个命令print data_structurecontinue

答案 1 :(得分: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