调试模式或发布模式
Debug mode or Release mode
最近,我正致力于将物理引擎整合到我的图形引擎程序中。在此之前,我总是在调试模式下构建我的程序,因为我觉得调试意味着安全,更多的信息让我知道哪里出错了。
在我的程序中,我在发布模式下构建Assimp,但直到现在我仍然在调试模式下使用它。现在,我在发布模式下构建Bullet Physics,因为在调试模式下性能会有很大的不同。如果你想知道它有多慢,你可以看到这个。
重要的是我不能使用这个*。在调试模式下的lib文件,所以我有一个问题,何时或为什么从调试模式更改为发布模式,或者另一方面。或者在调试模式下使用发布库?现在,我认为我需要将子弹物理永久地更改为发布模式,但不知道这是好还是坏。
编辑:我知道发布和调试模式的好处,因为在stackoverflow中有很多可能重复的文章,但我想知道的是,当你做一个程序时,你选择了什么决定,或者只是因为遇到性能问题,所以需要像我一样将程序重新构建为发布模式。我只是想澄清一下可能重复的文章之间的一点区别:)
这个问题有四种情况。
1。启动一个新项目并在Debug模式下编程,因为... .
2。启动一个新项目并在发布模式下编程,因为... .
3。在调试模式下工作一段时间,但由于... .
更改为发布模式4。在发布模式下工作一段时间,但由于... .
更改为调试模式我很想知道这四个案例的判决结果。我是案例3,由于Bullet Physics的性能,我决定将程序永远设置为发布模式,并将其他调试库重新构建为发布模式。在情况3中,问题是,我只是使用第三方库,所以我是否需要出于任何原因使用调试模式?还是直接进入释放模式?
对于情况1&2,是否有任何决定为什么你让调试模式或发布模式来构建你的新程序?
对于案例4,我不明白为什么要让一个人把Release模式改成Debug模式,但也许有实际的案例?除了构建库之外,你可以做出这个决定。
如果我的问题不够清楚,请告诉我。
"调试模式"answers"发布模式"是两个预定义的编译器开关集。但是,您可以覆盖它们,并创建中间表单。c++通常从内联中获益良多,因此内联调试构建是一种合理的中间形式。另一种常见的变化是使用C &c++库,甚至在调试版本中。
您甚至可以覆盖单个文件级别的开关。你的子弹头物理很可能是正确的,所以你可能想检查它们是否可以用
编译。也就是说,在处理不同的问题时,在调试和发布模式之间切换是很常见的。
在需要调试某些内容时使用调试(未优化)构建。它们产生的(缓慢的)代码与你的源代码非常匹配,这样你就可以更容易地调试。
为您发布的代码使用发布(优化)构建。它们生成的代码运行速度快了很多(通常是数量级),但是调试优化后的代码真的很困难,因为生成的代码通常与您编写的源代码大不相同。
在同一个程序中以debug/release方式构建的对象混合通常会导致灾难(崩溃)(特别是在microsoft编译器中);所以不要这么做
- 为什么使用__LINE_的代码在发布模式下在MSVC下编译,而不是在调试模式下
- 小字符串优化(调试与发布模式)
- 在调试模式下引发C++ "deque iterator not dereferencable"异常
- _mm256_load_ps调试模式下导致谷歌/基准测试的分段错误
- Visual Studio 发布模式阻止在调试模式下执行的代码.使用 WinHTTP 和多线程
- 自定义内存管理器在发布模式下工作正常,但在调试模式下则不然
- 使用Qt Creator在调试模式下编译一段代码
- 在调试模式下,所有程序都运行良好,但在发布模式下,我在cudaMalloc操作中出错
- 在类声明中初始化 const 成员变量时在调试模式下出现异常
- 在调试模式下编译时qrc_resource.cpp错误
- 如何在调试模式下通过终端运行可执行的 c++?
- 在Visual Studio 2017上无法使用调试模式x64进行OpenCV3.2编译
- 在调试模式下使用英特尔 TBB
- 我的代码在发布模式下不起作用,而在Qt的调试模式下工作
- SCANF 在 Eclipse 中不接受调试模式下的输入?
- 为什么我的 UWP 游戏在发布时比在调试模式下慢
- 在发布模式下崩溃,但如果可调试为 true - 不是..什么是可能的问题
- Visual Studio混合模式调试是否可以附加到Jupyter笔记本以同时调试C++和Python
- Windows 用户模式调试器传输 Visual Studio 2012
- VS2010 中使用 .NET 3.5 的混合模式调试