【发布时间】:2015-07-15 16:16:45
【问题描述】:
当我使用g++ 使用-Og 选项编译我的C++ 程序时,我看到变量是<optimized out>,并且当前行有时会跳过。这种优化级别的行为是预期的,还是我有问题? gcc 的手册页说:
-Og
优化调试体验。-Og启用不干扰调试的优化。它应该是标准编辑-编译-调试周期的首选优化级别,提供合理的优化级别,同时保持快速编译和良好的调试体验。
因此我没想到会出现这种行为。在我的系统上,我有 g++ 4.9.2 版和 gdb 7.7.1 版。
【问题讨论】:
-
"...提供合理级别的优化..."
-
只要遵守as-if规则,编译器就可以进行优化。这可能包括删除变量(或转换为常量),以及删除未使用的函数。
-
要么使用 -O0 要么习惯它
-
@ShmilTheCat: "...启用优化,不干扰调试..."
-
或许应该改名为-O0.5?
标签: c++ g++ compiler-flags