在源文件中包含额外的调试信息,以便在代码::块中使用gdb进行调试

Including Extra Debuging Info in Source File for debugging using gdb in Code::Blocks

本文关键字:调试 gdb 代码 包含额 源文件 信息      更新时间:2023-10-16

在Code::Blocks中调试C++源时,传递函数参数或数据结构成员的点仅显示为其地址。

经过一些研究,我发现我可以输入自定义手表作为<指针名称><包含大小的变量的数值大小>以使其显示为数组,但是我无法编辑结构上的默认显示。

我想知道是否有什么方法可以用特殊的注释标记源代码,这些注释可以在调试过程中进行解析,以实现自动化,并使复杂的对象在调试过程更容易查看。

struct {
size_t n;
int *p; /* I want gdb to interpreted this symbols as p@n by default */
}

我也希望能够为函数参数制定类似的规范。

首先,这是可能的,我在网上找不到任何关于标记源代码以帮助gdb的东西,我怀疑它甚至从未查看过源代码,因为调试信息要么存储在可执行文件中,要么存储在调试数据库中。

如果有办法做到这一点,我会怎么做?

注意:如果有一个Code::Blocks特定的解决方案,我会很高兴。

您遇到的问题似乎与调试信息的质量无关,而仅与调试器如何显示特定类型变量的值有关。这通常是可配置的或可编写脚本的。

代码::块使用松鼠脚本编写调试器脚本。通过扩展该脚本,您可以使调试器以特定的方式命令GDB,然后以您喜欢的方式解析和显示结果。script文件夹中的gdb_types.script由Code::Blocks运行。

如果你想为GDB本身编写脚本,那么可以在代码::块的"设置->编译器和调试器->调试器->初始命令"中完成,前提是脚本将由GDB运行。然后,您可以从gdb_types.script.调用该脚本中定义的函数