Cor*_*nel 106 .net visual-studio
.NET中可能重复的 调试Visual Studio发行版
Visual Studio中的Debug和Release有什么区别?
Vil*_*lx- 107
最重要的是,在调试模式下没有优化,而在发布模式下则有优化.这很重要,因为编译器非常先进,可以对代码进行一些非常棘手的低级改进.因此,您的代码中的某些行可能会在没有任何指令的情况下离开,或者某些行可能会混淆.逐步调试是不可能的.此外,局部变量通常以神秘的方式进行优化,因此Watches和QuickWatches通常不起作用,因为变量是"优化掉的".并且还有许多其他优化.尝试调试优化的.NET代码,你会看到.
另一个关键区别在于,因此默认的Release设置不会产生大量的调试符号信息.这是您可能已经注意到的.PDB文件,它允许调试器确定哪些汇编指令与哪行代码相对应,等等.
Jor*_*ans 49
"Debug"和"Release"实际上只是可以影响构建和调试的一系列设置的两个标签.
在"调试"模式下,您通常具有以下内容:
在"释放"模式下,将启用优化(尽管有多个可用选项),并且未定义_DEBUG预处理器定义.通常,您仍然希望生成PDB文件,因为当事情运行得更快时能够在发布模式下"调试"非常有用.
如果您通过项目编译选项并进行比较,您会看到有什么不同.
假设问题是关于本机/ C++代码(从措词中不完全清楚):
基本上,在Debug中,所有代码生成优化都是关闭的.某些库(例如STL)默认为更严格的错误检查(例如,调试迭代器).生成更多调试信息(例如,"编辑并继续").在代码中生成更多东西来捕获错误(局部变量值设置为未初始化模式,使用调试堆).
值得一提的是,非常明显的是,构建标志允许使用不同的逻辑,这些逻辑应仅用于更改日志记录和"控制台"消息传递,但可以被滥用并且不仅可以显着改变低级别,而且可以显着改变实际的业务逻辑.
另请注意,例如,在使用MFC时,调试项目链接到不可再MFC90D.DLL发行的DLL版本,例如发布构建链接与可再发行版本之类的链接MFC90.DLL.这可能与其他框架类似.
因此,您可能无法在非开发计算机上运行调试构建应用程序.
| 归档时间: |
|
| 查看次数: |
37212 次 |
| 最近记录: |