使用调试器命令

这描述了调试器命令的使用。 WinDbg 是一个调试器,可用于分析故障转储、调试实时用户模式和内核模式代码,以及检查 CPU 寄存器和内存。 有关详细信息,请参阅 WinDbg 概述

若要安装调试器,请参阅 “安装 Windows 调试器”。

要开始使用 WinDbg,请参阅开始使用 Windows 调试

WinDbg 调试器命令窗口

对于 WinDbg,“调试器命令窗口”是指标题栏中标记为“Command”的窗口。 此窗口包含两个窗格:

  • 在小型底部窗格中,输入命令。

  • 在大窗格上窗格中,可以查看命令输出。

此窗口始终在调试会话的开头打开。 可以通过在“视图”菜单上选择“命令”、“按 Alt+1”或“命令”(Alt+1)按钮(Alt+1)来重新打开或切换到此窗口。调试器命令窗口按钮的屏幕截图。

可以使用向上键和向下键滚动浏览命令历史记录。 出现上一个命令时,可以对其进行编辑,然后按 Enter 执行上一个命令(或上一命令的编辑版本)。 游标不必位于行的末尾,此过程才能正常工作。

KD 或 CDB

对于 KD 或 CDB,“调试器命令窗口”是指整个窗口。 在窗口底部的提示处输入命令。 如果命令有任何输出,窗口将显示输出,然后再次显示提示。

调试器命令窗口提示

执行用户模式调试时,调试器命令窗口中的提示如下所示。

2:005>

在前面的示例中,2 是当前进程编号,005 是当前线程编号。

如果将调试器附加到多台计算机,则会在进程和线程编号之前包括系统编号,如以下示例所示。

3:2:005>

在此示例中,3 是当前系统编号,2 是当前进程编号,005 是当前线程编号。

在只有一个处理器的目标计算机上执行内核模式调试时,提示如下所示。

kd>

但是,如果目标计算机有多个处理器,则当前处理器的数量会显示在提示之前,如以下示例所示。

0: kd>

如果调试器正忙于处理以前发出的命令,则不会暂时处理新命令,尽管这些命令可以添加到命令缓冲区。 此外,仍然可以在 KD 和 CDB 中使用 控制键 ,并且仍然可以在 WinDbg 中使用菜单命令和 快捷键 。 当 KD 或 CDB 处于此繁忙状态时,不会显示任何提示。 当 WinDbg 处于此繁忙状态时,以下指示器将显示为代替提示:

*BUSY*

可以使用 .pcmd(设置提示命令) 命令向此提示添加文本。

命令类型

WinDbg、KD 和 CDB 支持各种命令。 某些命令在调试器之间共享,有些命令仅在一两个调试器上可用。

某些命令仅在实时调试中可用,而其他命令仅在调试转储文件时可用。

某些命令仅在用户模式调试期间可用,而其他命令仅在内核模式调试期间可用。

某些命令仅在目标在某些处理器上运行时才可用。 有关所有命令及其限制的详细信息,请参阅 调试器命令

编辑、重复和取消命令

输入命令时,可以使用标准编辑键:

  • 使用向上键和向下键查找以前的命令。

  • 使用 BACKSPACE、DELETE、INSERT 和向左键和向右键编辑当前命令。

  • 按 ESC 键清除当前行。

可以按 Tab 键自动完成文本输入。 在任何调试器中,输入至少一个字符后按 TAB 键自动完成命令。 重复按 TAB 键以循环浏览文本完成选项,按住 Shift 键,然后按 Tab 以向后循环。 还可以使用文本中的通配符,然后按 TAB 展开到完整的文本完成选项集。 例如,如果键入 fo*!ba ,然后按 TAB,调试器将扩展到以“ba”开头的所有符号集,在模块名称以“fo”开头的所有模块中展开。 作为另一个示例,可以通过键入 !*prcb,然后按 TAB 完成其中具有“prcb ”的所有扩展命令。

使用 TAB 键执行文本完成时,如果文本片段以句点开头(.),则文本与点命令匹配。 如果文本片段以感叹号开头(!),则文本与扩展命令匹配。 否则,文本与符号匹配。 使用 TAB 键输入符号时,按 TAB 键完成代码并键入符号和模块名称。 如果没有明显的模块名称,则完成本地符号和模块名称。 如果提供了模块或模块模式,符号完成将完成所有匹配项中的代码和类型符号。

可以在“调试器命令”窗口中选择并按住(或右键单击),以自动将剪贴板的内容粘贴到键入的命令中。

最大命令长度为 4096 个字符。 但是,如果要 从内核调试器控制用户模式调试器,则最大行长度为 512 个字符。

在 CDB 和 KD 中,按 ENTER 键本身重复上一个命令。 在 WinDbg 中,可以启用或禁用此行为。 有关此行为的详细信息,请参阅 ENTER(重复最后一个命令)。

如果发出的最后一个命令显示长显示器,并且想要将其切断,请在 CDB 或 KD 中使用 Ctrl+C 键。 在 WinDbg 中,使用 调试 |中断 或按 Ctrl+BREAK。

在内核模式调试中,可以通过按 Ctrl+C 从目标计算机的键盘取消命令。

可以使用 .cls (清除屏幕) 命令清除调试器命令窗口中的所有文本 此命令清除整个命令历史记录。 在 WinDbg 中,可以使用“编辑”清除命令历史记录 |清除命令输出 命令,或通过在调试器命令窗口的快捷菜单上选择“ 清除命令输出 ”。

表达式语法

许多命令和扩展命令接受 表达式 作为其参数。 调试器在执行命令之前计算这些表达式。 有关表达式的详细信息,请参阅 “计算表达式”。

别名

别名是文本宏,可用于避免重新键入复杂短语。 有两种类型的别名。 有关别名的详细信息,请参阅 “使用别名”。

自重复命令

可以使用以下命令重复操作或有条件地执行其他命令:

有关每个命令的详细信息,请参阅各个命令主题。

控制滚动

可以使用滚动条查看以前的命令及其输出。

使用 CDB 或 KD 时,任何键盘条目都会自动将调试器命令窗口向下滚动回底部。

在 WinDbg 中,每当命令生成输出或按 Enter 键时,显示都会自动向下滚动到底部。 如果要禁用此自动滚动,请选择“视图”菜单上的选项,然后清除“自动滚动”复选框。

WinDbg 文本功能

在 WinDbg 中,可以使用多个附加功能来更改文本在 调试器命令窗口中的显示方式。 可以在 WinDbg 窗口中访问其中的一些功能、调试器命令窗口中的快捷菜单中的一些功能,以及一些功能,方法是选择相应的菜单图标。

  • 快捷菜单上的“自动换行”命令打开和关闭换行状态。 此命令会影响整个窗口,而不仅仅是在此状态更改后使用的命令。 由于许多命令和扩展生成带格式的显示,我们通常不建议换行。

  • 编辑 |添加到命令输出 菜单命令会在“调试器命令”窗口中添加注释。 快捷菜单上的“添加到命令输出”命令具有相同的效果。

  • 可以自定义用于文本和调试器命令窗口背景的颜色。 可以为不同类型的文本指定不同的颜色。 例如,可以在一种颜色中显示自动注册输出、另一种颜色的错误消息以及 第三种颜色的 DbgPrint 消息。

  • 可以使用 WinDbg 调试信息窗口通用的所有功能,例如自定义字体和使用特殊编辑命令。

远程调试

通过调试器执行远程调试时,调试客户端可以访问有限数量的命令。 若要更改客户端可以访问的命令数,请使用 -clines 命令行选项或_NT_DEBUG_HISTORY_SIZE环境变量