变量通过g++和-Og选项优化出来

Variables optimized out with g++ and the -Og option

本文关键字:选项 优化 -Og g++ 变量      更新时间:2023-10-16

当我使用-Og选项用g++编译我的c++程序时,我看到变量是<optimized out>,并且当前行有时也会跳过。这种行为在这个优化级别是预期的吗,还是我有什么问题?gcc的手册页说:

-Og

优化调试体验。-Og支持不干扰调试的优化。它应该是标准编辑-编译-调试周期所选择的优化级别,在保持快速编译和良好调试体验的同时提供合理的优化级别。

因此我没有预料到这种行为。在我的系统上,我的g++版本为4.9.2,gdb版本为7.7.1。

这是使用-Og选项编译时的正常行为。在这个优化级别上,只要遵循as-if规则,编译器就可以进行优化。这可能包括删除变量(或转换为常量),以及删除未使用的函数。

建议要么习惯跳过,要么使用-O0选项编译。