Eclipse c++调试器不显示变量值

Eclipse C++ debugger not displaying variable values

本文关键字:显示 变量值 调试器 c++ Eclipse      更新时间:2023-10-16

我使用Eclipse进行Java编码,没有任何问题。使用c++ Eclipse (Indigo),我的问题是,当我将鼠标放在变量上时,我无法看到它们的值!它只显示了变量的定义。

在Java中,如果我们右键单击一个变量,那么我们会得到一个类似"Inspect value"的选项。该选项在c++ eclipse中也不可见。如何解决这个问题?是否有任何插件或配置我错过了?

在Virtual Box (Windows XP主机)中新安装了Ubuntu 11.10。然后安装g++ 4.6、Eclipse Indigo和Eclipse CDT。在"Debug Configurations"中,显示:

Debugger: gdb/mi
Advanced: Automatically track values of "Variables" and "Registers"
GDB Debugger: gdb
GDB command file: .gdbinit
GDB Command set: Standard(Linux)
Protocol: mi
(unchecked) Verbose console mode
(unchecked) Use full file path to set breakpoints

我可以设置断点并在那里停止执行,唯一的问题是看到值。

最有可能的是,由于优化,这些值在那时不存在。例如,考虑:

int foo(void)
{
    int i=SomeFunctions();
    if(i>3) Foo();
    else
    {
       Bar();
       Baz();
    }
    // breakpoint here
    return 8;
}

编译器可以自由地将i完全保存在寄存器中。当您到达断点时,该寄存器可能已经被用于其他目的。调试器可能无法告诉您此时i的值。

作为一般规则,除非程序的执行取决于变量的值,否则不要求能够确定该变量的值。

似乎编译器正在优化它。确保变量永远不会被优化的一个快速技巧是将其声明为volatile。这告诉编译器,变量应该被视为可以在任何时间被更改(例如从中断修改全局变量)。

的例子:

int main()
{
   // Even though we never read the value of test, it will not be optimized away
   volatile int test;
   test = foo();
   return 0;
}