GDB / DDD <var> 在当前上下文中没有符号



我找到了一个旧的解决方案来解决这个问题,建议用-gdwarf-2编译,但这个解决方案不适合或不再适合我。

因此,在编译文件上运行ddd,然后双击变量总是会导致错误no symbol <var> in current context

我的程序如下:

int main()
{
    for (int i = 0; i < 10; ++i)
    {
    }
}
我使用的命令是:
 g++ -g -O0 -gdwarf-2 test.cpp; ddd. ./a.out

程序版本:

ddd: GNU DDD 3.3.12 (x86_64-pc-linux-gnu)
gdb: GNU gdb (Ubuntu 7.7.1-0ubuntu5~14.04.2) 7.7.1
gcc: gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3)

我怎样才能使它工作?

为了打印/显示变量,它们必须在作用域中,所以对于局部变量/参数,这意味着你必须在该作用域中的断点处。

我可以通过使用示例程序启动ddd并立即尝试打印/显示i来重现您所得到的错误。

一旦我在for行上设置了一个断点并运行程序,我就能够按预期打印/显示它们。

我用:

编译
g++ -Wall -O0 -ggdb -o test.exe test.cpp

和运行DDD与

ddd ./test.exe

GNU DDD 3.3.12 (x86_64-pc-linux-gnu)
GNU gdb (Ubuntu 7.11.1-0ubuntu1~16.04) 7.11.1
gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.1)

您是否尝试从编译标志中删除-gdwarf-2 ?在一个带有旧调试器的系统上使用新编译器时,我也遇到过类似的问题。然后编译器使用的默认调试符号格式对调试器来说太新了,我不得不让编译器使用旧格式。如果调试器最近更新过,这可能类似。

相关内容

  • 没有找到相关文章

最新更新