我使用Eclipse进行Java编码没有任何问题。使用C ++ Eclipse(Indigo),我的问题是,当我把鼠标放在它们上面时,我无法看到变量的值!它只显示变量的定义。
在Java中,如果我们右键单击变量,那么我们会得到像"Inspect value"
这样的选项。在C ++ eclipse中也看不到该选项。
如何解决这个问题?我缺少任何插件或配置吗?
在Virtual Box(Windows XP Host)中新安装了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
我可以放置断点并停止执行,唯一的问题是看到值。
答案 0 :(得分:1)
最有可能的是,由于优化,这些值在那时不存在。例如,考虑:
int foo(void)
{
int i=SomeFunctions();
if(i>3) Foo();
else
{
Bar();
Baz();
}
// breakpoint here
return 8;
}
编译器可以将i
完全保留在寄存器中。到达断点时,该寄存器可能已被重新用于其他目的。调试器无法在此时告诉您i
的值。
作为一般规则,除非程序的执行取决于变量的值,否则不要求可以确定变量的值。
关闭优化可能有所帮助。
答案 1 :(得分:1)
编译器似乎可能正在优化它。确保变量永远不会被优化的快速技巧是将其声明为 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;
}