我在C#项目的发布模式下调试时无法观察变量。但是,在项目设置中启用DEBUG后,我能够查看局部变量值。我知道符号定义是生成的,但是在发布模式下调试时,调试和编译时间以及JIT优化如何协同工作?
答案 0 :(得分:0)
优化是一个会使代码无害的过程。很难确定何时在发布中看到您的变量。可以执行优化还是不执行优化。例如,这里的代码如下:
int GetInt()
{
var a = 1;
var b = a;
var c = b;
return b;
}
可能会在JIT中消失,将被内联或将被编译为:
int GetInt() {return 1;}
如您所见,您没有定义任何变量。在某些情况下,可以为实际源生成符号,在某些情况下它是不可能的,并且在您反编译并看到IL之前,您永远不会知道。