2

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

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

确实,我可以编写一个很长的漂亮打印机函数,但是由于所有指针都是已知类型(没有 void 指针)并且 GDB 已经知道如何通过手动调用 p *x 来做到这一点,它可以用来实现这一点吗?

通常 GDB 打印结构的第一层而不递归地进入其他层。

4

1 回答 1

2

通常 GDB 打印结构的第一层而不递归地进入其他层。

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

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

但是,如果您不想这样做,可以很容易地用Python编写一个通用的“遵循所有指针”漂亮的打印机。请注意不要在带有周期的图表上调用这样的打印机。

于 2012-11-17T20:55:03.830 回答