在发布模式下调试的缺点

时间:2016-12-27 17:13:32

标签: c++ visual-studio debugging

在发布模式下使用Visual Studio调试本机C ++程序有什么缺点?为什么我要通过设置两种不同的模式而不仅仅是在发布模式下调试来打扰自己?

通过在发布模式下调试,我的意思是在设置所有需要的配置(生成调试信息,禁用优化和增量链接......)之后

换句话说,为什么我应该有一个调试模式,我必须将我的项目链接到任何第三方的调试版本,而我可以简单地将我的发布模式更改为发布模式的"可调试版本&#34 ; (假设我不想在调试我的应用程序时深入研究第三个库)

2 个答案:

答案 0 :(得分:7)

如果你a)生成调试信息和b)禁用优化,那么这几乎不是释放模式。它是没有启用_DEBUG的调试模式。

有些人在pure-debug和release-only之上定义了这样的第三个构建配置,仅用于调试有时仅在发布时弹出的问题。

唉,在仅发布版本中弹出的问题类型往往是由优化引起的,因此这种构建的用途有限。但如果它适合你,没有什么能阻止你使用它。

只是_DEBUG应该导致在日志中发出额外的信息,当然还有要检查的断言,这两种情况在正常情况下都是开发不可或缺的。因此,将“调试”模式视为“调试”,而不是“开发”模式。

拥有不同版本的目的是让您不必一直搞乱他们的配置。您只需配置所需的构建,然后就可以忘记它们。如果您为了调试目的而修改发布版本,那么下次要向户外发送新版本时,您将不得不撤消这些修改并重建新的“真正”发布模式版本。你不想这样做。

此外,第三方库的_DEBUG模式可能会生成可能对您进行调试有用的日志记录,但最重要的是,它可能还会执行其他输入参数检查,这对于开发健壮的软件绝对必不可少。因此,您不希望在未处于_DEBUG模式的第三方库上进行开发。

答案 1 :(得分:1)

您错过了调试运行时库!这将检查运行时的错误参数,这是一种可能导致发布运行时无法解释的错误的错误。