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