可能重复

在VisualStudio中调试和发布有什么区别?

推荐答案

最重要的是,在调试模式下没有优化,而在发布模式下有优化.这一点很重要,因为编译器非常先进,可以对您的代码进行一些相当棘手的低级改进.因此,您的代码中的某些行可能会完全没有任何指令,或者可能会完全混淆.循序渐进的调试是不可能的.此外,局部变量通常以神秘的方式进行优化,因此手表和QuickWatch通常无法工作,因为变量被"优化"了.还有许多其他的优化.有空试着调试优化的.NET代码,您就会明白.

另一个关键区别是,由于这一点,默认版本设置不需要生成大量调试符号信息.这就是问题所在.您可能已经注意到了PDB文件,它允许调试器找出哪些汇编指令与哪一行代码对应,等等.

.net相关问答推荐

信号量的多线程问题

在 C# 中,如何使用泛型的基类将泛型接口的所有实例注入到单个构造函数中?

使用带有大数据的 SqlCommand 异步方法的可怕性能

“x 为 null”和“x == null”有什么区别?

为什么具有可为空值的结构的 HashSet 非常慢?

如何解码 JWT 令牌?

Web API 中基于令牌的身份验证,无需任何用户界面

在 .NET Core RC2 中构建 .exe 文件

是否有可以接受命名输入参数而不是索引占位符的“String.Format”?

.NET 框架如何为 OutOfMemoryException 分配内存?

IIS Express - 500.19 无法读取配置文件 - 因为它正在查看错误的路径

Visual Studio 2015 项目不再在调试模式下运行

将枚举转换为字符串

我是否应该担心“此异步方法缺少 'await' 运算符并将同步运行”警告

为什么这个字符串的长度比它的字符数长?

如何从控制台应用程序中的 Task.WaitAll() 获取返回值?

创建堆栈大小为默认值 50 倍的线程时有什么危险?

程序集引用的“特定版本”属性在 Visual Studio 中究竟是如何工作的?

如何在 Visual Studio 中选择 .NET 4.5.2 作为目标框架

自创建数据库以来,支持“ApplicationDbContext”上下文的模型已更改