代码之家  ›  专栏  ›  技术社区  ›  Michael Stum

在Visual Studio 2010调试期间观看.NET堆栈或CIL?

  •  3
  • Michael Stum  · 技术社区  · 15 年前

    我正在调试一个在发布模式下编译的程序集,所以所有“好东西”如局部变量都被优化掉了。

    作为第二种方法,我希望看到CIL和.NET堆栈,但在Visual Studio 2010中似乎没有这个选项-我只有反汇编、寄存器和内存视图,比它低一级。

    有没有在Visual Studio 2010中调试CIL的方法?

    如果重要的话,这是.NET 3.5 SP1。

    1 回复  |  直到 15 年前
        1
  •  3
  •   Hans Passant    15 年前

    这是.NET的基本原理,您 从未 执行IL。JIT编译器将其转换为机器代码,这两个程序几乎没有共同点。您看不到IL正在执行,只有机器代码。

    是的,您只需要知道局部变量值是什么,即反汇编窗口和寄存器窗口。后者向您显示当它们加载到CPU寄存器中时,它们的值是什么。需要了解x86(或x64)程序集的一些知识,才能查看C和程序集代码之间的对应关系,以了解哪个寄存器包含哪些局部变量。您必须使用一个内存窗口来查看堆栈,但这是非常不切实际的,您需要知道EBP寄存器的值和偏移量。