点击项目->属性-> C/C+±>优化。
默认为已禁用(/Od)。其他选项有:
- 使大小最小化(/O1)
- 使速度最大话(/O2)
- 完全优化(/Ox)
开启优化可能带来副作用:
- 本地变量(可被优化器移除或移动到调试器无法识别的位置)。
- 函数内部的位置(当优化器合并代码块时发生变化的位置)。
- 调用堆栈上框架的函数名称(如果优化器合并两个函数,则函数名称可能是错误的)。
但是,假定所有框架都有符号,则在调用堆栈上看到的框架几乎总是正确的。 在下列情况下调用堆栈上的框架将是错误的:有堆栈损坏,有用汇编语言编写的函数,或者有操作系统框架在调用堆栈上没有匹配的符号。
全局和静态变量总是正确显示。 结构布局也是这样。 如果您有指向结构的指针而且指针的值是正确的,那么结构的每个成员变量都将显示正确值。
出于这些限制原因,只要有可能,就应使用程序的“未优化”版本进行调试。 默认情况下,优化在 Visual C++ 程序的“调试”配置中关闭,在“发布”配置中打开。
但是,bug 可能仅在程序的优化版本中出现。 在此情况下,必须调试优化的代码。
参考资料:
如何:调试优化的代码