WinDbg 中的程序集代码调试 (经典)
在 WinDbg 中,可以通过输入命令或使用反汇编窗口来查看程序集代码。
调试器命令窗口
可以通过在“调试器命令”窗口中输入 u、ub、uu (unassemble) 命令之一来查看程序集代码。
Dissasembly Window
若要打开或切换到“反汇编”窗口,请从“视图”菜单中选择“反汇编”。 (还可以按 Alt+7 或选择工具栏上的 “反汇编 ”按钮。ALT+SHIFT+7 将关闭反汇编窗口。)
以下屏幕截图显示了反汇编窗口的示例。
调试器获取一部分内存,将其解释为二进制计算机指令,然后对其进行反汇编以生成计算机指令的汇编语言版本。 生成的代码显示在“反汇编”窗口中。
在“反汇编”窗口中,可以执行以下操作:
若要反汇编内存的不同部分,请在“ 偏移量 ”框中,键入要反汇编的内存的地址。 (可以在键入地址后按 Enter,但不必 ) “反汇编”窗口在完成地址之前显示代码;可以忽略此代码。
若要查看内存的其他部分,请选择“ 上一个 ”或“ 下一步 ”按钮,或按 PAGE UP 或 PAGE DOWN 键。 这些命令分别显示内存中前面或以下部分的反汇编代码。 通过按向右键、向左键、向上键和向下键,可以在窗口中导航。 如果使用这些键移出页面,将显示一个新页面。
反汇编窗口具有一个工具栏,其中包含两个按钮和一个带有其他命令的快捷菜单。 若要访问菜单,请选择并按住 (或右键单击) 标题栏,或选择窗口右上角附近显示的图标。 以下列表描述了一些菜单命令。
转到当前地址 将打开“源”窗口,其中包含对应于“反汇编”窗口中所选行的源文件,并突出显示此行。
在当前指令之前反汇编 会导致将当前行放置在反汇编窗口的中间。 此命令是默认选项。 如果清除此命令,当前行将显示在反汇编窗口的顶部,这将节省时间,因为反向反汇编可能很耗时。
突出显示当前源行中的指令 会导致突出显示与当前源行对应的所有指令。 通常,单个源行将对应于多个程序集指令。 如果代码已优化,这些程序集指令可能不是连续的。 此命令使你能够查找从当前源行组装的所有指令。
显示每个指令的源行 显示对应于每个程序集指令的源行号。
显示每个指令的源文件 显示对应于每个程序集指令的源文件名称。
另请参阅
有关程序集调试和相关命令的详细信息以及程序集显示的完整说明,请参阅 在程序集模式下调试。
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈