我正在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
您要打印的表达式肯定存在其他问题.您是否尝试过使用DDD之类的GUI调试器,该调试器将允许您通过单击鼠标来选择要打印的内容?