GDB:在打印/转储到文件时自动展平结构

时间:2012-11-17 20:12:27

标签: c debugging gdb

我有一个复杂的C结构,其中包含许多指向更复杂结构的指针。

使用GDB进行调试时,我希望能够将结构展平为屏幕/文件。

实际上,我可以编写一个非常漂亮的打印机函数,但由于所有指针都是已知类型(没有void指针)而且GDB已经知道如何通过手动调用p * x来实现,可以用它来实现此?

通常GDB打印结构的第一级而不递归地输入其他级别。

1 个答案:

答案 0 :(得分:2)

  

通常GDB打印结构的第一级而不递归地输入其他级别。

如果GDB没有这样做,当你尝试打印循环链表时会发生什么?

一般来说,在你的程序中编写一个漂亮的打印函数无论如何都是一个好主意:有一天你将拥有一个非调试可执行文件,你的结构的“根”在一个寄存器中,你将会需要检查结构。

但如果您不想这样做,可以在Python中轻松编写通用的“跟随所有指针”漂亮的打印机。小心不要在带有循环的图表上调用这样的打印机。