在发布模式下的调试(而优化是开启的)和在调试模式下的调试有什么区别?

本文关键字:调试 模式 什么 区别 布模式 优化 | 更新日期: 2023-09-27 18:11:59

在c#项目的发布模式下调试时,我无法观察变量。但是,在项目设置中启用DEBUG后,我能够查看本地变量值。我知道会生成符号定义,但是在发布模式下进行调试时,调试、编译时间和JIT优化如何一起发挥作用呢?

在发布模式下的调试(而优化是开启的)和在调试模式下的调试有什么区别?

优化是将无害地更改代码的过程。很难确定您的变量何时会在发布中出现。优化可以执行,也可以不执行。例如,下面的代码:

int GetInt()
{
    var a = 1;
    var b = a;
    var c = b;
    return b;
}

可能会在JIT中消失,将被内联或编译为:

int GetInt() {return 1;}

如您所见,没有定义变量。在某些情况下,可以为实际的源代码生成符号,在某些情况下,这是不可能的,除非您反编译它并看到IL,否则您永远不会知道。