变量名称与GDB调试器冲突

我正在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调试器,该调试器将允许您通过单击鼠标来选择要打印的内容?

上一篇:Inspection of unmanaged type requires unmanaged debugging to be enabled需要启用非托管调试,请将调试器类型设置为“mixed”


下一篇:在Eclipse for Java中,是否有类似Visual Studio自定义调试器的可视化工具