我正在Linux上用GDBdebugging一个C ++程序,我需要在程序运行时看到一个成员variables的值。 不幸的是,成员variables名为list
,恰好是一个GDB关键字。 所以当我尝试:
print m_operations.m_data[10].m_data.list
我得到…
A syntax error in expression, near list'.
我尝试了各种各样的事情来向GDB表明我正在input一个文字expression式,比如在variables名称周围放置双引号或者单引号,但是这只会导致更多的语法错误。 我查看了GDB手册,找不到任何解决办法。 我无法重命名成员variables,因为我没有被授权修改该类。 此外, list
是一个C ++对象,而不是一个普通的整数或POD,所以我不能简单地使用x
关键字来检查那里的内存…至less不是花费一些严肃的时间来解密原始二进制代表的东西。
那么,有什么build议来解决这个问题?
问题不是你认为它是 – 如果我调试下面的代码:
int main() { int list = 666; while( list ) { list--; } }
我可以打破第三线,说:
(gdb) print list
这给了我:
$1 = 666
您尝试打印的表达式一定有其他错误。 您是否尝试过使用GUI调试器,如DDD ,这将允许您通过单击鼠标来选择要打印的内容?
这很可能是GDB
(或可能在GCC
)中的一个错误。
首先尝试最新的GDB
(7.0.1)。
如果失败,尝试创建一个简单的独立测试用例,并在GDB
bugzilla中提交一个bug。 如果你这样做, 一定要告诉哪个版本的GCC
被用来编译你的测试。