使用g ++和-Og选项优化的变量

时间:2015-07-15 16:16:46

标签: c++ g++ compiler-flags

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

  

-Og

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

因此我没想到会出现这种情况。在我的系统上,我有g ++版本4.9.2和gdb版本7.7.1。

1 个答案:

答案 0 :(得分:2)

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

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