Visual Studio 中的发布模式和调试模式有啥区别? [复制]

Posted

技术标签:

【中文标题】Visual Studio 中的发布模式和调试模式有啥区别? [复制]【英文标题】:What is the difference between Release and Debug modes in Visual Studio? [duplicate]Visual Studio 中的发布模式和调试模式有什么区别? [复制] 【发布时间】:2010-10-30 08:14:37 【问题描述】:

可能重复: Debug vs. release in .NET Debug/Release difference

在构建项目时,Visual Studio 中的发布模式和调试模式有什么区别?

【问题讨论】:

这个related question 有很多很好的信息。 【参考方案1】:

DebugRelease 只是不同解决方案配置的标签。如果需要,您可以添加其他人。我曾经参与的一个项目有一个名为“Debug Internal”的项目,用于打开应用程序的内部编辑功能。如果你去Configuration Manager...(它在Build菜单上)你可以看到这个。您可以在Configuration Manager Dialog Box 下找到有关 MSDN 库的更多信息。

每个解决方案配置然后由一堆项目配置组成。同样,这些只是标签,这次是为您的项目设置的集合。例如,我们的 C++ 库项目有名为“Debug”、“Debug_Unicode”、“Debug_MT”等的项目配置。

可用设置取决于您正在构建的项目类型。对于 .NET 项目,这是一个相当小的集合:#defines 和其他一些东西。对于 C++ 项目,您需要调整更多种类的东西。

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

【讨论】:

项目配置可以通过右键单击SolutionExplorer中的项目并从上下文菜单中选择属性来进行编辑。为了编辑项目配置“Release”的调试设置,请选择左侧的“Debug”选项卡,然后使用名为“Configuration”的组合框选择“Release”。 =>对解决方案配置或项目配置使用标签“调试”可能会产生误导,因为“发布”配置也可以调试。 另见以下关于如何启用/禁用编译优化的问题。 ***.com/questions/1199204/…(在 VB.NET 中,它可以在编译选项卡上找到 => 高级编译选项...) 如果您想禁用为发布模式创建调试信息,您可以通过将选项“生成调试信息”设置为无来实现。尽管如此,调试器将在启动应用程序时附加。为了避免这种情况……你需要使用“不调试就开始”(Strg+F5)。 我们可以在发布前选择我们使用的配置(发布、调试等)。调试应用程序呢?我的意思是,在 VS 中运行应用程序时,我希望如果我选择调试,它将使用调试配置,如果我选择发布并运行应用程序,它将使用发布配置,但据我所知,它没有.正常吗? 1) 以下问题怎么办?一个 ASP.NET MVC 项目中有 3 个配置:基础 (web)、调试 (web.debug)、发布 (web.release)。假设我们通过转换到相应的配置(调试和发布)来设置调试和发布连接字符串。发布时,我们可以根据我们在发布对话框中的选择进行发布。但是,在运行应用程序时,尽管我选择了调试,但它使用了发布配置(因为我在基础和调试配置中设置了调试配置),这正常吗?【参考方案2】:

嗯,这取决于您使用的语言,但通常它们是 2 个独立的配置,每个配置都有自己的设置。默认情况下,Debug 在编译文件中包含调试信息(允许轻松调试),而 Release 通常启用优化。

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

【讨论】:

【参考方案3】:

主要区别在于在调试模式下编译时,还会创建允许调试的 pdb 文件(因此您可以在代码运行时单步执行)。然而,这意味着代码没有优化。

【讨论】:

您也可以在发布模式下单步执行代码。 发布模式下也会生成pdb文件 -1:这是错误的:pdb 文件也应该为发布版本生成,因为它对于调试远程崩溃的应用程序非常有用,并且不会真正增加沉重的性能成本。实际上是VS中的默认设置 我可以假设如果我们正在测试运行应用程序,调试模式是必不可少的,并且建议最终构建发布模式吗?

以上是关于Visual Studio 中的发布模式和调试模式有啥区别? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

可以从命令行运行 C++ 代码,但不能从 Visual Studio 中的调试模式运行

如何从 Visual Studio 以调试模式运行 NUnit?

QTextStream 和 Visual Studio 2008 发布模式

Visual Studio 2012 不同的值发布/调试模式

Visual Studio 2010 认为它处于调试模式(但它设置为发布模式)

Visual Studio:区分 app.config 以用于调试和发布模式