在Visual Studio中,Release模式和Debug模式有什么区别?

148

这个相关问题有很多有用的信息。 - dommer
3个回答

142

DebugRelease只是针对不同解决方案配置的标签。如果需要,您可以添加其他标签。我曾经参与过的一个项目还有一个名为“Debug Internal”的标签,该标签用于启用应用程序的内部编辑功能。您可以在配置管理器...(在生成菜单中)中查看此内容。您可以在MSDN图书馆的Configuration Manager Dialog Box下找到更多信息。

每个解决方案配置由一堆项目配置组成。同样地,这些只是标签,用于存储项目的各种设置。例如,我们的C++库项目有名为“Debug”、“Debug_Unicode”、“Debug_MT”等的项目配置。

可用的设置取决于您构建的项目类型。对于.NET项目而言,它包含的选项比较少:一些#define和其他一些东西。对于C++项目,您可以调整的选项更多。

一般来说,当您希望项目在不开启优化器的情况下构建且要在构建中包含完整的调试/符号信息(通常在.PDB文件中)时,您将使用“Debug”。当您希望开启优化器且不包含完整的调试信息时,您将使用“Release”。


项目配置可以通过在“解决方案资源管理器”中右键单击项目并从上下文菜单中选择“属性”来进行编辑。为了编辑项目配置“Release”的调试设置,在左侧选择“Debug”选项卡,并使用名为“Configuration”的组合框选择“Release”。=> 在解决方案配置或项目配置中使用标签“Debug”可能会误导,因为“Release”配置也可以进行调试。 - Stefan
还可以参考以下关于如何启用/禁用编译优化的问题。https://dev59.com/t3M_5IYBdhLWcg3w2XHw(在VB.NET中,它可以在编译选项卡=>高级编译选项中找到...) - Stefan
如果你想禁用发布模式下的调试信息生成,你可以把选项“生成调试信息”设置为“无”。但是,在启动应用程序时调试器仍然会被附加。为了避免这种情况发生,你需要使用“不带调试启动”(Ctrl+F5)。 - Stefan
我们可以在发布之前选择使用哪个配置(Release,Debug等)。那么调试应用程序呢?我的意思是,当在VS中运行应用程序时,我期望如果选择Debug,它将使用debug配置,如果选择Release并运行应用程序,则将使用release配置,但是据我所见它并没有。这正常吗? - user5871859
以下问题怎么解决?在一个ASP.NET MVC项目中有3个配置:基础(web)、调试(web.debug)和发布(web.release)。假设我们通过转换将调试和发布连接字符串设置为相应的配置(debug和release)。在发布时,我们可以根据发布对话框中的选择进行发布。但是,在运行应用程序时,尽管我选择了Debug,它仍然使用发布配置(因为我在基础和调试配置中设置了调试配置),这正常吗? - user5871859
2) 在调试或发布模式下运行应用程序时,Visual Studio会使用基本的Web配置文件还是相应的Web配置文件(web.debug.config或web.release.config)? - user5871859

109

好的,这取决于您使用的编程语言,但通常有两个单独的配置,每个配置都有自己的设置。默认情况下,Debug在编译文件中包含调试信息(便于调试),而Release通常启用优化。

就条件编译而言,它们各自定义了可以在程序中检查的不同符号,但它们是特定于语言的宏。


20
主要区别在于在调试模式下编译时,会同时创建pdb文件以允许调试(因此可以在运行代码时逐步执行代码)。然而,这也意味着代码没有优化得那么好。

22
你可以在发布模式下逐步执行代码。 - E Mett
14
pdb文件也会在发布模式下生成。 - Ankush Jain
7
这是错误的:应该为发布版本生成pdb文件,因为这对于调试远程崩溃的应用程序非常有用,而且不会增加太多性能成本。事实上,在VS中这是默认设置。 - ceztko
我可以假设,如果我们正在测试运行应用程序,则必须使用调试模式,而对于最终构建的发布模式是推荐的吗? - ammad khan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接