我找到了建议使用-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 ./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)

关于c++ - GDB/DDD在当前上下文中没有符号<var>,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38816668/

10-14 07:50