在 WinDbg (经典) 中查看和编辑寄存器

寄存器是位于 CPU 上的小型易失性内存单元。 许多寄存器专用于特定用途,其他寄存器可供用户模式应用程序使用。 基于 x86 和基于 x64 的处理器具有可用的寄存器的不同集合。 有关每个处理器上的寄存器的详细信息,请参阅 处理器体系结构

在 WinDbg 中,可以通过输入命令、使用“寄存器”窗口或使用“监视窗口”来查看和编辑寄存器。

命令

可以通过在“调试器命令”窗口中输入 r (Registers) 命令来查看和编辑寄存器。 可以使用多个选项或使用 rm (Register Mask) 命令自定义显示。

每次目标停止时,也会自动显示寄存器。 如果使用 p (Step) t (Trace) 命令单步执行代码,则每个步骤都会显示寄存器。 若要停止此显示,请在使用这些命令时使用 r 选项。

在基于 x86 的处理器上, r 选项还控制多个称为标志的一位寄存器。 若要更改这些标志,请使用与更改常规寄存器时略有不同的语法。 有关这些标志的详细信息和此语法的说明,请参阅 x86 Flags

寄存器窗口

打开“寄存器”窗口

若要打开或切换到“寄存器”窗口,请从“视图”菜单中选择“寄存器”。 (还可以按 Alt+4 或选择工具栏上的“ 注册 ”按钮。Alt+Shift+4 关闭“寄存器”窗口。)

以下屏幕截图显示了“寄存器”窗口的示例。

WinDbg 中“注册”窗口的屏幕截图。

“寄存器”窗口包含两列。 Reg 列列出目标处理器的所有寄存器。 “ 值” 列显示每个寄存器的当前值。 此窗口还包含用于打开自定义注册列表”对话框的工具栏上的“自定义”按钮。

使用“寄存器”窗口

在“寄存器”窗口中,可以执行以下操作:

  • 值” 列显示每个寄存器的当前值。 最近更改的寄存器的值以红色文本显示。

    • 若要输入新值,请双击 “值” 单元格,然后键入新值或编辑旧值。 (剪切、复制和粘贴命令可用于编辑。)
    • 若要保存新值,请按 Enter。
    • 若要放弃新值,请按 ESC。
    • 如果键入无效值,则按 Enter 时,旧值将重新出现。
  • 寄存器值显示在当前基数中,并且必须在相同的基数中键入新值。 若要更改当前基数,请在“调试器命令”窗口中使用 n (Set Number Base) 命令。

  • 在用户模式下,“寄存器”窗口显示与当前线程关联的寄存器。 有关当前线程的详细信息,请参阅 控制进程和线程

  • 在内核模式下,“寄存器”窗口显示与当前 寄存器上下文关联的寄存器。 可以设置寄存器上下文以匹配特定的线程、上下文记录或陷阱帧。 实际仅显示指定寄存器上下文的最重要寄存器;无法更改其值。

“寄存器”窗口有一个工具栏,其中包含“ 自定义 ”按钮,并具有包含其他命令的快捷菜单。 若要访问菜单,请选择并按住 (右键单击标题栏) ,或选择窗口右上角附近的图标 (按钮图标的屏幕截图,用于在 WinDbg 中显示“注册”窗口快捷菜单。

  • (工具栏和菜单) “自定义” 将打开“ 自定义注册列表 ”对话框,本主题的下一节对此进行介绍。

  • 仅 (菜单) 工具栏 打开和关闭工具栏。

  • (菜单仅) 停靠取消停靠 会导致窗口进入或离开停靠状态。

  • (菜单仅) 移动到新扩展坞 会关闭“寄存器”窗口并在新扩展坞中打开它。

  • (菜单仅) 设置为窗口类型的选项卡停靠目标 对于“寄存器”窗口不可用。 此选项仅适用于“源”或“内存”窗口。

  • (菜单仅) 始终浮动 会导致窗口保持取消停靠状态,即使它被拖动到停靠位置。

  • (菜单仅) 移动框架 会导致在移动 WinDbg 框架时窗口移动,即使窗口已取消停靠也是如此。

  • (菜单“仅) 帮助 ”打开 Windows 调试工具文档中的本主题。

  • (菜单仅) 关闭 关闭此窗口。

“自定义注册列表”对话框

若要更改显示的寄存器列表,请选择“ 自定义 ”按钮。 将显示“ 自定义注册列表 ”对话框。

在此对话框中,可以编辑寄存器列表以更改寄存器的显示顺序。 (实际上无法从列表中删除寄存器;如果这样做,它将在末尾重新出现。) 寄存器名称之间必须有一个空格。

如果选择“首先检查显示修改的寄存器值”框,则最近更改其值的寄存器将显示在顶部。

如果选择“不显示子注册检查”框,则不会显示子注册。 例如,将显示 eax ,但不会显示 axahal

选择 “确定” 保存更改,或 选择“取消” 以放弃更改。

如果要调试具有多种处理器的多处理器计算机,WinDbg 将单独存储每种处理器类型的自定义设置。 通过这种分离,可以同时自定义每个处理器寄存器的显示。

监视窗口

在 WinDbg 中,可以使用“监视”窗口显示寄存器。 不能使用“监视”窗口更改寄存器的值。

若要打开“监视”窗口,请从“视图”菜单中选择“监视”。 还可以按 Alt+2 或选择工具栏上的“ 监视 ”按钮: WinDbg 中“监视”按钮的屏幕截图。

以下屏幕截图显示了“监视”窗口的示例。

WinDbg 中“监视”窗口的屏幕截图。

另请参阅

有关寄存器上下文和其他上下文设置的详细信息,请参阅 更改上下文