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

Dha*_*ana 15 .net

重复: .NET中的调试与发布

为什么在.NET应用程序中构建"调试"和"释放"模式?

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

And*_*nea 9

区别:

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

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


Chr*_*s B 6

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


Ani*_*oel 0

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

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

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