2016-12-27 147 views
1

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

通过在释放模式的调试,我将所有需要的配置后平均(生成调试信息,禁用优化和增量链接...)

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

回答

6

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

有些人在纯调试和发行版本之上定义了这样的第三个构建配置,仅针对调试问题,有时仅在发布时才会弹出。

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

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

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

此外,第三方库的_DEBUG模式可能会生成可能对您有用的调试日志,但最重要的是,它可能还会执行额外的输入参数检查,这对于开发强大的软件来说绝对是不可或缺的。因此,您不希望在不处于_DEBUG模式的第三方库上进行开发。

+0

谢谢..我想告诉我为什么我应该有一个调试模式,我必须将我的项目链接到任何第三方的调试版本,而我可以简单地将我的发布模式更改为“可调试版本的发布模式“ –

+1

拥有不同版本的目的是让您不必一直弄乱它们的配置。你只需配置你想要的版本,然后你忘记了它们。每当你想将新版本发送到户外时,你都不会惹恼配置。 –

+0

此外,第三方库的_DEBUG模式可能会生成日志记录,这些日志文件可能对调试有用,也可能会执行额外的输入参数检查,这对于开发功能强大的软件来说绝对是必不可少的,因此您不希望成为在不处于_DEBUG模式的第三方库上开发。 –

1

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

相关问题