通过


使用调试器命令

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

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

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

WinDbg 调试器命令窗口

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

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

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

此窗口始终在调试会话的开头打开。 可以通过在“视图”菜单上选择“命令”、按 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 中,可以使用“命令”功能区选项卡上的“清除历史记录”清除命令历史记录,或者通过在命令窗口的上下文菜单中选择“清除命令历史记录”(右键单击)。

表达式语法

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

Aliases

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

自我重复命令

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

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

控制滚动

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

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

在 WinDbg 中,每当命令生成输出或按 Enter 键时,显示都会自动向下滚动到底部。 如果要禁用此自动滚动,请在“命令”功能区选项卡上关闭“自动滚动”按钮,或在“命令”窗口中右键单击并取消选中“自动滚动”。

WinDbg 文本功能

在 WinDbg 中,可以使用多个附加功能来更改文本在 调试器命令窗口中的显示方式。 可以从 “命令 ”功能区选项卡访问其中一些功能,也可以从“命令”窗口中的上下文菜单(右键单击)访问这些功能。

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

  • 命令”功能区选项卡上的“突出显示选择”按钮(或在上下文菜单上“突出显示选择”)用于突出显示或取消突出显示当前文本选择(Ctrl+Alt+H)。

  • 命令”功能区选项卡上的“擦除选择”按钮(或“清除上下文菜单上的选定文本”)将从命令历史记录中清除当前选定的文本。

  • 可以使用“命令”功能区选项卡上的“转到上一个”(Ctrl+[)和“转到下一个”(Ctrl+])在命令节之间导航,或在上下文菜单中选择上一个命令选择下一个命令

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

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

远程调试

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