.NET中的“Debug”和“Release”构建之间的主要区别是什么?

时间:2009-04-09 11:41:55

标签: .net

重复: Debug vs. release in .NET

为什么在.NET应用程序中构建时会出现“调试”和“释放”模式?

它们之间的主要技术差异是什么?

4 个答案:

答案 0 :(得分:8)

的差异:

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

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

答案 1 :(得分:6)

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

答案 2 :(得分:0)

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

您可能已经注意到调试文件夹中的.pdb文件。此外,可执行文件的大小也相当大。但是在发布模式下,假定最终用户打算使用应用程序,则不会提供调试器符号信息,因此不得为其提供应用程序符号。

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

答案 3 :(得分:0)

是的,你甚至可以在发布模式下调试[:)]。有很复杂的过程可以做到。

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

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