我有一个复杂的C结构,其中包含许多指向更复杂结构的指针。
使用GDB进行调试时,我希望能够将结构展平为屏幕/文件。
实际上,我可以编写一个非常漂亮的打印机函数,但由于所有指针都是已知类型(没有void指针)而且GDB已经知道如何通过手动调用p * x来实现,可以用它来实现此?
通常GDB打印结构的第一级而不递归地输入其他级别。
答案 0 :(得分:2)
通常GDB打印结构的第一级而不递归地输入其他级别。
如果GDB没有这样做,当你尝试打印循环链表时会发生什么?
一般来说,在你的程序中编写一个漂亮的打印函数无论如何都是一个好主意:有一天你将拥有一个非调试可执行文件,你的结构的“根”在一个寄存器中,你将会需要检查结构。
但如果您不想这样做,可以在Python中轻松编写通用的“跟随所有指针”漂亮的打印机。小心不要在带有循环的图表上调用这样的打印机。