变量通过g++和-Og选项优化出来
Variables optimized out with g++ and the -Og option
当我使用-Og
选项用g++
编译我的c++程序时,我看到变量是<optimized out>
,并且当前行有时也会跳过。这种行为在这个优化级别是预期的吗,还是我有什么问题?gcc的手册页说:
-Og
优化调试体验。-Og
支持不干扰调试的优化。它应该是标准编辑-编译-调试周期所选择的优化级别,在保持快速编译和良好调试体验的同时提供合理的优化级别。
因此我没有预料到这种行为。在我的系统上,我的g++版本为4.9.2,gdb版本为7.7.1。
这是使用-Og
选项编译时的正常行为。在这个优化级别上,只要遵循as-if规则,编译器就可以进行优化。这可能包括删除变量(或转换为常量),以及删除未使用的函数。
建议要么习惯跳过,要么使用-O0
选项编译。
相关文章:
- 空基优化子对象的地址
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- Win32编译器选项和内存分配
- 关闭||运算符优化
- 如何解决gcc编译器优化导致的centos双编译器设置中的分段错误
- C/C++预处理器是否可以检测一些编译器选项
- 是否有C++编译器选项允许激进地删除所有函数调用,并将参数传递给具有空体的函数
- 将--whole archive链接器选项与CMake和具有其他库依赖项的库一起使用
- 返回值优化:显式移动还是隐式
- 人脸跟踪arduino代码的优化
- 使用仅使用一次的变量调用的复制构造函数.这可能是通过调用move构造函数进行编译器优化的情况吗
- 通过选项卡的文本设置QTabWidget顺序
- 通过ccmake在cmake中缓存依赖选项
- 纯函数,为什么没有优化
- 使用 Libtorch 1.5 和 C++ 中的优化器选项更新学习率
- 用于 TSP 的 3 选项优化代码
- g++优化选项会影响sin函数的值
- 是否有任何优化选项,可以改变结构的对齐在VS2012
- 如何在gcc中保留命令行选项,但为某些功能添加更多优化标志
- 变量通过g++和-Og选项优化出来