在 Visual Studio 调试器中查看反汇编代码(C#、C++、Visual Basic、F#)

反汇编窗口显示与编译器创建的指令对应的汇编代码。 如果要调试托管代码,这些程序集指令对应于由实时(JIT)编译器创建的本机代码,而不是 Visual Studio 编译器创建的Microsoft中间语言(MSIL)。

注释

若要充分利用 反汇编 窗口,请理解或学习 汇编语言编程的基础知识。 Intel 指令集的参考资料位于 体系结构手册的第二卷中。 此材料通常也适用于 AMD 指令集。

仅当启用地址级调试时,此功能才可用。 它不适用于脚本或 SQL 调试。

除程序集说明外, 反汇编 窗口还可以显示以下可选信息:

  • 每个指令所在的内存地址。 对于本机应用程序,它是实际的内存地址。 对于 Visual Basic 或 C#,它是距离函数开头的偏移量。

  • 用于生成汇编代码的源代码。

  • 代码字节或实际计算机或 MSIL 指令的字节表示形式。

  • 内存地址的符号名称。

  • 对应于源代码的行号。

汇编语言指令由助记符(指令名称的缩写)和用于变量、寄存器和常量的符号组成。 每条机器语言指令由一个汇编语言助记符表示,并可选地跟随一个或多个符号。

程序集代码严重依赖于处理器寄存器,或者对于托管代码,公共语言运行时寄存器。 可以使用 反汇编 窗口和 寄存器 窗口来检查寄存器内容。

若要以原始数字形式(而不是程序集语言)查看计算机代码指令,请使用“内存”窗口或从反汇编窗口中的快捷菜单中选择“代码字节”。

使用“反汇编”窗口

若要启用 反汇编 窗口,请打开 “工具>选项 ”窗格。 展开“所有设置>>”部分,然后选择“启用地址级调试”复选框。

若要启用 反汇编 窗口,请打开 “工具>选项 ”对话框。 展开 “调试>常规 ”部分,然后选择“ 启用地址级调试 ”复选框。

若要在调试过程中打开 反汇编 窗口,请选择 “调试>Windows>反汇编” 或按 Ctrl + Alt + D

注释

你看到的对话框和菜单命令可能与本文中所述的 UI 不同,具体取决于你的活动设置或版本。 若要更改设置,请选择“工具”菜单上的“导入和导出设置”。 有关详细信息,请参阅 “重置所有设置”。

若要打开或关闭可选信息,请在 反汇编 窗口中右键单击,并在快捷菜单中设置或清除所需选项。

左边距中的黄色箭头标记当前执行点。 对于本机代码,执行点对应于 CPU 的程序计数器。 此位置显示将在程序中执行的下一个指令。

在内存中向上或向下翻页

“内存 ”窗口或 “反汇编” 窗口中查看内存内容时,可以使用垂直滚动条在内存空间中向上或向下移动。

  • 若要向下翻页(移动到更高的内存地址),请选择滚动框下方的垂直滚动条。

  • 若要向上翻页(移动到较低的内存地址),请选择拇指上方的垂直滚动条。

    请注意,垂直滚动条以非标准方式运行。 新式计算机的地址空间很大。 如果抓住滚动条拇指并将其拖动到随机位置,则很容易丢失上下文。 因此,拇指是“弹簧加载”,并且始终停留在滚动条的中心。 在本机代码应用程序中,可以向上或向下翻页,但无法自由滚动。

    在托管应用程序中,反汇编限于一个函数,因而您可以正常滚动。

    请注意,较高地址显示在窗口底部。 若要查看更高的地址,必须向下移动,而不是向上移动。

向上或向下移动一个指令

  • 选择垂直滚动条顶部或底部的箭头。