Eclipse c++调试器不显示变量值
Eclipse C++ debugger not displaying variable values
我使用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;
}
相关文章:
- 使用变量值作为 PlaySound 中的路径
- 通过指针偏移量访问结构变量值
- 变量值在 C++ 中的 glutIdleFunc() 中未递增
- 更新 #ifdef 中的现有变量值?
- 尝试更改 main 函数内的全局变量值时出现编译错误 C++.
- 通过 Rcpp 和 bit64 R 包将最大的int64_t变量值从 C++ 传递到 R
- 如何使用 IRBuilder 更新 LLVM IR 中的全局变量值?
- 更改已在运行的程序的变量值
- 在 Xcode 中使用后对外部变量值进行初始化
- C++整数变量值
- 变量值,在三元运算符之后
- 如何获得对不同类的引用,以便从所述类内部获得变量值
- Java应用程序的JNI-c++变量值
- 如何固定从传感器获得的变量值
- 离开方法时重置变量值
- 打印具有通用特定变量值的类对象
- 在宏函数C++中设置宏变量值
- 为什么每次迭代都会获得相同的变量值? C++
- 如何根据基类对象中的变量值分配派生类中的变量?
- Eclipse c++调试器不显示变量值