调试模式和禁用优化的发布模式的调试有何不同?

时间:2013-07-17 11:11:43

标签: visual-studio

在调试模式和发布模式下调试有什么区别? 在发布模式下,加载的符号表包含较少的符号信息,这意味着调试信息较少。但是,如果我们在C / C ++中设置“禁用(/ Od)” - >优化 - >优化,那么我在两种调试类型中看不出任何差异。 调试模式和发布模式有没有差异(优化已禁用)?

1 个答案:

答案 0 :(得分:3)

它的魔力很小。 Debug和Release只是分配给一组编译器选项的名称。 Debug配置最相关的选项是/ Od选项,它会禁用优化器,因此您的代码更容易调试。

显然,您始终可以将Release配置选项更改为类似Debug配置选项。就像禁用优化器一样。现在它们之间没有相关的区别,Release配置的行为与调试器中的Debug配置非常相似。

调试配置中通常用于影响代码的其他选项:

  • 定义_DEBUG宏,断言将触发
  • 功能内联已关闭
  • / RTC选项已开启,非常擅长捕捉代码中的错误
  • 定义_HAS_ITERATOR_DEBUGGING宏,捕获使用STL类的代码中的错误
  • 您将链接到CRT的调试版本,在该版本中启用断言
  • 假设#included crtdbg.h
  • ,将启用调试分配器
  • 编辑+继续支持已打开,副作用是更大的堆栈帧