我正在使用 gdb 调试 C++ 程序。
我有这个代码:
int x = floor(sqrt(3));
我想查看 x 的值。但是,gdb 声称 x 是“
最佳答案
在高优化级别上,编译器可以消除中间值,正如您在此处看到的。有多种选择:
- 您可以降低优化级别,使调试器更容易跟踪事物。
-O0
肯定可以工作(但会慢很多),-O1
也可以正常工作。 - 您可以添加一些显式打印语句来记录输出值。
- 您通常也可以强制编译器通过将其设置为 volatile 来保留此特定值(但请记住在完成后将其取消设置为 volatile!)。但是请注意,由于控制流在优化代码中也会发生变化,即使您可以看到变量的值,当您查看有问题的变量。
关于c++ - 如何在 C++ 中查看 <optimized out> 变量的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9123676/