在 Code::Blocks 中调试 C++ 源代码时,传递函数参数或数据结构成员的点仅显示为它们的地址。
经过一些研究,我发现我可以将自定义 watch 输入为
我想知道是否有某种方法可以使用特殊注释来标记源代码,这些注释可以在调试期间进行解析以自动执行此操作并使复杂对象在调试期间更易于查看。
即
struct {
size_t n;
int *p; /* I want gdb to interpreted this symbols as p@n by default */
}
我也希望能够对函数参数进行类似的规范。
首先这是否可能,我在网上找不到任何关于标记源代码以帮助 gdb 的东西,并且怀疑它甚至从未查看源代码,因为调试信息存储在可执行文件或调试数据库中。
如果有某种方法可以做到这一点,我会怎么做?
注意:如果有 Code::Blocks 特定的解决方案,我会很高兴。
最佳答案
您遇到的问题似乎与调试信息的质量无关,而仅与调试器如何显示特定类型变量的值有关。这通常是可配置的或可编写脚本的。
Code::Blocks 使用松鼠脚本 Debugger scripting .通过扩展该脚本,您可以使调试器以特定方式命令 GDB,然后按照您喜欢的方式解析和显示结果。脚本文件夹中的 gdb_types.script 由 Code::Blocks 运行。
如果你想script GDB本身然后可以在 Code::Blocks 的“设置 -> 编译器和调试器 -> 调试器 -> 初始命令”中完成,前提是脚本将由 GDB 运行。然后您可以从 gdb_types.script 调用该脚本中定义的函数。
关于c++ - 在源文件中包含额外的调试信息,以便在 Code::Blocks 中使用 gdb 进行调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51725570/