【问题标题】:What is the key difference between a 'Debug' and a 'Release' build in .NET? [duplicate].NET 中的“调试”和“发布”版本之间的主要区别是什么? [复制]
【发布时间】:2009-04-09 11:41:55
【问题描述】:

重复: Debug vs. release in .NET

为什么在构建 .NET 应用程序时有“调试”和“发布”模式?

它们之间的主要技术区别是什么?

【问题讨论】:

标签: .net


【解决方案1】:

区别:

  • 调试在有用的 CIL 代码之间插入 NOP(无操作 CPU 指令)以允许调试器附加
  • 调试不允许各种优化:
    • 内联(放置方法的代码代替对其的调用以减少调用开销)
    • 循环展开(用重复的代码替换循环代码 - 例如 for - 以消除循环开销(循环变量维护))

还有很多其他的。发布速度明显更快,但它没有提供真正的调试支持。对于调试,有...调试模式:)

【讨论】:

    【解决方案2】:

    简短的回答是,在“发布”模式下构建的代码将针对速度或大小进行优化,并且还会删除用于调试的所有信息

    【讨论】:

      【解决方案3】:

      据我所知,主要区别在于,在调试模式下,调试器使用的整个符号信息与程序一起存储,因此如果开发人员想在发布之前调试应用程序,他/她可以这样做, 通过附加到任何调试器。

      您可能已经注意到调试文件夹中的 .pdb 文件。可执行文件的大小也相当大。然而,在发布模式下,调试器符号信息被省略,假设最终用户将使用应用程序,因此不得向他提供应用程序符号。

      您可以将符号视为提供给调试器的信息,以了解哪些局部变量,哪些函数,设置断点的位置以及各种信息,以便它可以准确地告诉您当前正在执行的代码部分。

      【讨论】:

      • 这是不正确的 - 调试符号可以在调试和发布模式下使用。
      • 谢谢我明白了。我更多地考虑了项目设置中可用的默认配置。
      【解决方案4】:

      是的,您甚至可以在发布模式下调试 [:)]。有复杂的过程来做到这一点。

      但是,发布版本针对速度和性能进行了优化。此外,Microsoft 最终用户许可协议规定您不能在客户端系统上部署调试文件。

      http://www.codeproject.com/KB/debug/releasemode.aspx

      【讨论】:

        猜你喜欢
        • 2011-02-23
        • 2010-10-20
        • 1970-01-01
        • 2019-12-15
        • 2011-05-20
        • 2017-03-10
        • 1970-01-01
        • 1970-01-01
        • 2018-11-10
        相关资源
        最近更新 更多