前一段时间我读过关于CLR,其中笔者发现,如果一个项目在调试模式下进行编译,每个运营商而来的,是NOP命令之前,从而使调试代码的文章。 不过,今天我发现,我们还可以调试在释放模式,以及...请帮助理解上的差异。
Answer 1:
您可以在Release模式调试的程度。 调试和发布被简单地生成配置(其中可以创建很多),则真正的区别在于调试配置不优化所生成的二进制代码(优化的代码复杂调试)。 它还生成版本不额外调试数据。
Answer 2:
调试.NET代码,这样就可以通过,而它通常执行的源代码步骤需要三件事情:
- 这是与大会的.dll或.exe沿内置符号 (相关.pdb文件)
- 源 (相关的.cs,的.vb等文件)
- 在执行机器代码必须是未优化的
pdbonly}标志。 如果指定/debug:full
(甚至在发布版本,与编译器优化关闭),你可以连接到一个正在运行的进程,并逐步调试代码。 如果您有/debug:pdbonly
,则必须使用调试器来启动程序(和附加到已经运行的进程时不能查看符号)。
优化是通过精细地控制/调试编译器选项,但可以通过进一步控制/ optimize- 。
Answer 3:
在释放模式编译优化生成的二进制,这使得它很难(但不是不可能),用于调试器知道哪些二进制代码从源代码行线来了。
调试模式设计,使其更容易调试器“跟着一起”,因此它与NOP分开的代码行,并且不优化生成的二进制文件。
文章来源: Debugging in .NET in Release mode