在MSVC中混合调试和发布?

时间:2011-09-17 16:53:29

标签: c++ debugging visual-c++

我有一个程序,它有一个非常简单的'加载'功能,需要大约30秒(3M三角形进入std容器)。 它运作得非常好。

其余的并不总是(它没有完成)所以我调试了很多我做了很多改变等等,这意味着经常重启。

是否有任何秘密技术可以在发布中编译加载器(这会极大地加速一切)并将其余部分作为调试进行处理?

PS。我使用MSVC 2005

2 个答案:

答案 0 :(得分:3)

在Visual C ++上,调试版本往往非常慢。这有几个原因:

  • 最明显的是代码未经优化
  • 调试CRT库中的内存分配函数执行其他检查以检测堆损坏和其他问题,因此速度较慢。
  • 许多STL函数在调试版本上执行额外的验证和断言,这使得STL容器的使用非常慢

我已成功调试使用以下方法大量使用内存和STL的应用程序:

  • 使用发布版本进行调试(是的,这样可以正常工作!)。
  • 配置您的发布版本以包含调试符号,这应该使编译器编写调试器使用的.pdb文件
  • 仅针对您要调试的文件,将编译器设置为无优化。

请注意,上述内容非常适合在您自己的逻辑中调试问题,但如果您正在调试内存损坏或其他问题,则可能不是最佳选择,因为您正在消除CRT为这些提供的所有额外调试代码问题类型。

我希望这有帮助!

答案 1 :(得分:2)

混合调试和发布版本往往会出现严重错误。

但即使在调试版本中,也没有理由不对某些选定的源文件启用优化 - 优化应该会为您带来性能改进。