WinDbg 中的程序集代码调试 (经典)

在 WinDbg 中,可以通过输入命令或使用反汇编窗口来查看程序集代码。

调试器命令窗口

可以通过在“调试器命令”窗口中输入 u、ub、uu (unassemble) 命令之一来查看程序集代码。

Dissasembly Window

若要打开或切换到“反汇编”窗口,请从“视图”菜单中选择“反汇编”。 (还可以按 Alt+7 或选择工具栏上的 “反汇编 ”按钮。ALT+SHIFT+7 将关闭反汇编窗口。)

以下屏幕截图显示了反汇编窗口的示例。

WinDbg 中反汇编窗口的屏幕截图。

调试器获取一部分内存,将其解释为二进制计算机指令,然后对其进行反汇编以生成计算机指令的汇编语言版本。 生成的代码显示在“反汇编”窗口中。

在“反汇编”窗口中,可以执行以下操作:

  • 若要反汇编内存的不同部分,请在“ 偏移量 ”框中,键入要反汇编的内存的地址。 (可以在键入地址后按 Enter,但不必 ) “反汇编”窗口在完成地址之前显示代码;可以忽略此代码。

  • 若要查看内存的其他部分,请选择“ 上一个 ”或“ 下一步 ”按钮,或按 PAGE UP 或 PAGE DOWN 键。 这些命令分别显示内存中前面或以下部分的反汇编代码。 通过按向右键、向左键、向上键和向下键,可以在窗口中导航。 如果使用这些键移出页面,将显示一个新页面。

反汇编窗口具有一个工具栏,其中包含两个按钮和一个带有其他命令的快捷菜单。 若要访问菜单,请选择并按住 (或右键单击) 标题栏,或选择窗口右上角附近显示的图标。 以下列表描述了一些菜单命令。

  • 转到当前地址 将打开“源”窗口,其中包含对应于“反汇编”窗口中所选行的源文件,并突出显示此行。

  • 在当前指令之前反汇编 会导致将当前行放置在反汇编窗口的中间。 此命令是默认选项。 如果清除此命令,当前行将显示在反汇编窗口的顶部,这将节省时间,因为反向反汇编可能很耗时。

  • 突出显示当前源行中的指令 会导致突出显示与当前源行对应的所有指令。 通常,单个源行将对应于多个程序集指令。 如果代码已优化,这些程序集指令可能不是连续的。 此命令使你能够查找从当前源行组装的所有指令。

  • 显示每个指令的源行 显示对应于每个程序集指令的源行号。

  • 显示每个指令的源文件 显示对应于每个程序集指令的源文件名称。

另请参阅

有关程序集调试和相关命令的详细信息以及程序集显示的完整说明,请参阅 在程序集模式下调试