在.NET中,“Debug”和“Release”版本的关键区别是什么?

16

1
重复:https://dev59.com/enRC5IYBdhLWcg3wP-Zh - Canavar
4个回答

13

区别:

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

还有许多其他区别。发布版本明显更快,但它没有真正的调试支持。对于调试,需要使用调试模式 :)


7
一个简短的回答是,“Release”模式下构建的代码将被优化为速度或大小,并且将删除用于调试的所有信息。

0

据我所知,主要区别在于在调试模式下,整个符号信息(由调试器使用)与程序一起存储,因此如果开发人员想在发布之前调试应用程序,可以通过连接到任何调试器来实现。

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

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


这是不正确的 - 调试符号可以在调试和发布模式下都可用。 - morechilli
请查看以下链接:https://dev59.com/MHVC5IYBdhLWcg3wqzLV - morechilli
谢谢,我明白了。我更多地是从项目设置中可用的默认配置方面考虑的。 - Anirudh Goel

0

没错,你甚至可以在发布模式下进行调试[:)]。但是,这需要复杂的过程。

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

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


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