【问题标题】:What is the difference between Release and Debug modes in Visual Studio? [duplicate]Visual Studio 中的发布模式和调试模式有什么区别? [复制]
【发布时间】:2019-10-22 10:01:45
【问题描述】:

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

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

【问题讨论】:

标签: visual-studio visual-studio-2005 conditional-compilation


【解决方案1】:

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

【讨论】:

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

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

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

【讨论】:

    【解决方案3】:

    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”。 =>对解决方案配置或项目配置使用标签“调试”可能会产生误导,因为“发布”配置也可以调试。
    • 另见以下关于如何启用/禁用编译优化的问题。 stackoverflow.com/questions/1199204/…(在 VB.NET 中,它可以在编译选项卡上找到 => 高级编译选项...)
    • 如果您想禁用为发布模式创建调试信息,您可以通过将选项“生成调试信息”设置为无来实现。尽管如此,调试器将在启动应用程序时附加。为了避免这种情况……你需要使用“不调试就开始”(Strg+F5)。
    • 我们可以在发布前选择我们使用的配置(发布、调试等)。调试应用程序呢?我的意思是,在 VS 中运行应用程序时,我希望如果我选择调试,它将使用调试配置,如果我选择发布并运行应用程序,它将使用发布配置,但据我所知,它没有.正常吗?
    • 1) 以下问题怎么办?一个 ASP.NET MVC 项目中有 3 个配置:基础 (web)、调试 (web.debug)、发布 (web.release)。假设我们通过转换到相应的配置(调试和发布)来设置调试和发布连接字符串。发布时,我们可以根据我们在发布对话框中的选择进行发布。但是,在运行应用程序时,尽管我选择了调试,但它使用了发布配置(因为我在基础和调试配置中设置了调试配置),这正常吗?
    猜你喜欢
    • 2011-07-17
    • 1970-01-01
    • 2010-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多