最近,我正在将物理引擎集成到我的图形引擎程序中。在此之前,我总是以调试模式构建我的程序,因为我觉得调试意味着安全,并提供更多信息让我知道哪里出错。调试模式或发布模式
在我的程序中,我在Release模式下构建了Assimp,但直到现在我仍然在Debug模式下使用它。就目前而言,我在Release模式下构建Bullet物理因为调试模式下的性能大不相同。如果你想知道它有多慢,你可以看到this。
重要的是,我无法在调试模式下使用该* .lib文件,所以我有一个问题,何时或为什么要从调试模式更改为发布模式或另一方面。或者在调试模式下使用发布库?就目前而言,我认为我需要永久性地改变为“释放”模式以用于子弹物理学,并且不知道这是好还是坏。
编辑:
我知道释放和调试模式benifit,因为有很多计算器可以复制的文章,但我想知道的是,当你做一个节目是什么决定了选择或仅仅是因为遇到一个性能问题,所以需要重新编译为像我这样的发布模式。我只是想澄清可能重复的文章之间有点不同:)
这个问题有四种情况。
案例1.由于...,在调试模式下启动一个新的项目和编程。
第2种情况。由于......而在Release模式下启动一个新的项目和编程。
第3种情况。在调试模式下工作一段时间,但由于...更改为发布模式。
案例4.在发布模式中工作一段时间,但由于......而更改为调试模式。
我真的很想知道四种情况下的决定。我在案例3中,由于子弹物理的性能,我决定让程序永远成为发布模式,并且让其他调试库重建为发布模式。在案例3中,问题是,我只是使用第三方库,所以我需要使用调试模式出于任何原因?或者我只是去释放模式?
对于案例1 & 2,是否有任何决定你为什么让调试模式或发布模式来建立你的新程序。
对于情况4,我想不出为什么让一个人将发布模式更改为调试模式,但也许有实际情况?除了建立图书馆,你可以做出这个决定。
如果我的问题不够清楚,请告诉我。
总是从Debug构建开始,以获取代码中的错误。然后,您需要测试Release版本以验证您首先选择C++的原因。您需要使用完整的预期数据集检查您的程序是否具有足够的性能。如果不是,那么你需要一个探查器来寻找热点。始终部署发布版本。 –
像gdb,lldb,Visual Debugger这样的调试器在发布模式下很难使用 - 一些函数缺失(内联),并且指令重新排序使得它们在步骤命令中向前和向后跳转。由于调试器是查找错误的非常高效的工具,因此最好先从调试模式开始,除非您打算不使用它们。 – Franck
值得注意的是,当相同的错误代码可能会使程序崩溃时,通常调试版本会倾向于默默地处理某些未定义行为类,因此密集型测试几乎完全在发布版本上完成。 – Jack