发布模式下DEBUG on(启用Optimize时)和Debug Mode中调试有什么区别?

时间:2016-10-07 14:58:00

标签: c# .net release

我在C#项目的发布模式下调试时无法观察变量。但是,在项目设置中启用DEBUG后,我能够查看局部变量值。我知道符号定义是生成的,但是在发布模式下调试时,调试和编译时间以及JIT优化如何协同工作?

1 个答案:

答案 0 :(得分:0)

优化是一个会使代码无害的过程。很难确定何时在发布中看到您的变量。可以执行优化还是不执行优化。例如,这里的代码如下:

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

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

int GetInt() {return 1;}

如您所见,您没有定义任何变量。在某些情况下,可以为实际源生成符号,在某些情况下它是不可能的,并且在您反编译并看到IL之前,您永远不会知道。