我正在使用gdb来调试C++程序.
我有这个代码:
int x = floor(sqrt(3));
Run Code Online (Sandbox Code Playgroud)
我想查看x的值.但是,gdb声称x是"<optimized_out>".如何查看x的值?我应该更改编译器标志吗?
bdo*_*lan 38
在高优化级别上,编译器可以消除中间值,如您在此处所见.有很多选择:
-O0
肯定会工作(但会慢得多),-O1
也可以正常工作.Gig*_*igi 15
如果您不能或不想禁用优化,那么您可以尝试将变量声明为 volatile.这通常足以使您的编译器在最终代码中保留变量.
或者,在最近的GCC版本中,您可以仅为一个函数禁用优化,如下所示:
void my_function() __attribute__((optimize(0)))
{
int x = floor(sqrt(3));
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
66622 次 |
最近记录: |