【问题标题】:What is the difference between DEBUG on in Release Mode(while Optimize is on) and Debugging in Debug Mode?发布模式下的调试(优化开启时)和调试模式下的调试有什么区别?
【发布时间】:2016-10-07 14:58:00
【问题描述】:

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

【问题讨论】:

    标签: c# .net release


    【解决方案1】:

    优化是对代码进行无害更改的过程。很难确定您的变量何时会在发布中看到。可以执行或不执行优化。例如这里的代码:

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

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

    int GetInt() {return 1;}
    

    如您所见,您没有定义任何变量。在某些情况下,可以为实际源代码生成符号,在某些情况下是不可能的,直到你反编译它并查看 IL,你才能知道。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-30
      • 2014-02-18
      • 2019-10-22
      • 1970-01-01
      • 2011-09-21
      • 2011-07-17
      • 1970-01-01
      相关资源
      最近更新 更多