2

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

4

1 回答 1

3

它几乎没有什么魔力。Debug 和 Release 只是分配给一组编译器选项的名称。与 Debug 配置最相关的选项是 /Od 选项,它禁用优化器,因此您的代码更易于调试。

显然,您始终可以将 Release 配置选项更改为类似于 Debug 配置选项。就像禁用优化器一样。现在它们之间不再存在相关差异,并且 Release 配置的行为很像调试器中的 Debug 配置。

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

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