【发布时间】:2012-11-17 20:12:27
【问题描述】:
我有一个复杂的 C 结构,其中包含许多指向更复杂结构的指针。
在使用 GDB 进行调试时,我希望能够将结构展平到屏幕/文件中。
确实,我可以写一个很长的漂亮的打印机函数,但是由于所有的指针都是已知类型的(没有空指针),而且 GDB 已经知道如何手动调用 p *x 来做到这一点,可以用它来实现吗?这个?
通常 GDB 会打印结构的第一层而不递归地进入其他层。
【问题讨论】:
我有一个复杂的 C 结构,其中包含许多指向更复杂结构的指针。
在使用 GDB 进行调试时,我希望能够将结构展平到屏幕/文件中。
确实,我可以写一个很长的漂亮的打印机函数,但是由于所有的指针都是已知类型的(没有空指针),而且 GDB 已经知道如何手动调用 p *x 来做到这一点,可以用它来实现吗?这个?
通常 GDB 会打印结构的第一层而不递归地进入其他层。
【问题讨论】:
通常 GDB 会打印结构的第一层而不递归地进入其他层。
如果 GDB 不这样做,当你尝试打印循环链表时会发生什么?
一般来说,在你的程序中编写一个漂亮的打印函数是一个好主意:总有一天你会有一个非调试可执行文件,你的结构的“根”在一个寄存器中,你会需要检查结构。
但如果您不想这样做,可以在Python 中轻松编写通用的“遵循所有指针”漂亮的打印机。请注意不要在有循环的图表上调用这样的打印机。
【讨论】: