我正在 Linux 上使用 GDB 调试 C++ 程序,我需要在程序运行时查看成员变量的值。不幸的是,成员变量被命名为 list
,它恰好是一个 GDB 关键字。所以当我尝试时:
打印 m_operations.m_data[10].m_data.list
我明白了...
表达式中的语法错误,靠近列表'。
我尝试了各种方法来向 GDB 表明我正在输入文字表达式,例如在变量名周围放置双引号或单引号,但这只会导致更多语法错误。我查看了 GDB 手册,但找不到任何解决方法。我无法重命名成员变量,因为我无权修改该类。此外,list
是一个 C++ 对象,不是常规整数或 POD,因此我不能简单地使用 x
关键字来检查那里的内存……至少不能无需花费大量时间来破译原始二进制文件代表的内容。
那么,有什么解决这个问题的建议吗?
最佳答案
问题不是你想的那样——如果我调试下面的代码:
int main() {
int list = 666;
while( list ) {
list--;
}
}
我可以在第三行中断并说:
(gdb) print list
这给了我:
$1 = 666
您尝试打印的表达式一定有其他问题。您是否尝试过使用 GUI 调试器,例如 DDD , 这将允许您通过单击鼠标来选择要打印的内容?
关于c - 变量名与 GDB 调试器冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2247440/