c - 变量名与 GDB 调试器冲突

标签 c linux debugging 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

您尝试打印的表达式一定有其他问题。您是否尝试过使用 GUI 调试器,例如 DDD , 这将允许您通过单击鼠标来选择要打印的内容?

关于c - 变量名与 GDB 调试器冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2247440/

相关文章:

c - 如何强制将 SIGILL 发送到我的程序?

java - Postgres 错误(设置 PLJava)

linux - 在 Linux 设备驱动程序中使用 float 的编码约定是什么?

linux - 如何在XML文件中的单词后面添加变量内容

iOS - 检测应用程序是否正在从 Xcode 运行

c - 在 C 中,尝试使用将华氏度转换为开尔文的程序

c - 需要 int args(线程)的帮助

java - C和Java之间的 double 差异

android - INSTALL_FAILED_ACWF_INCOMPATIBLE 安装错误

c++ - Backward-cpp 中的颜色代表什么意思?