目录
1. WinDbg调试器窗口
对于 WinDbg 而言,“调试器命令窗口”指的是标题栏中标记为“命令”的窗口。此窗口包含两个窗格:
(1) 在底部的小面板,可以输入命令的窗口。
(2) 在上面的大面板中,可以看到命令的输出,当然,还有其它的一些信息输出。
如下图所示:

此窗口在调试会话开始时始终打开。你可以通过在“视图(View)”菜单中选择“命令(Command)”、按 ALT+1 或选择“Command(Alt+1)”按钮来重新打开或切换到此窗口。
在输入命令窗口中,你可以使用↑ 键和 ↓ 键来显示历史命令。当出现之前的命令时,你可以对其进行编辑,然后按 Enter 键执行之前的命令(或编辑后的命令)。光标不必位于行尾,此操作也能正常工作。
2. KD 或 CDB
对于 KD(Kernel Debugger) 或 CDB(Console Debugger) 来说,“调试器命令窗口”指的是整个窗口。你需要在窗口底部的提示符处输入命令。如果命令有任何输出,窗口将显示输出结果,然后再次显示提示符。
3. 调试器命令窗口提示
当你执行用户模式调试时,“调试器命令”窗口中的提示符类似于以下示例。
2:005>
在前面的示例中,2 是当前进程号,005 是当前线程号。
如果将调试器连接到多台计算机,则系统号会显示在进程号和线程号之前,如下例所示。
3:2:005>
在这个例子中,3 是当前系统编号,2 是当前进程编号,005 是当前线程编号。
当你在只有单个处理器的目标计算机上执行内核模式调试时,提示符类似于以下示例。
kd>
然而,如果目标计算机有多个处理器,则当前处理器的编号会出现在提示符之前,如下例所示。
0: kd>
如果调试器正忙于处理先前发出的命令,则新命令将暂时无法处理,但可以添加到命令缓冲区。此外,你仍然可以在 KD 和 CDB 中使用 Ctrl 键,并且仍然可以在 WinDbg 中使用菜单命令和快捷键。当 KD 或 CDB 处于这种忙碌状态时,不会显示任何提示。当 WinDbg 处于这种忙碌状态时,提示的位置将显示以下指示器:
*BUSY*
可以使用 .pcmd(设置提示符命令)命令向此提示符添加文本。
4. 命令种类
WinDbg、KD 和 CDB 支持多种命令。有些命令在调试器之间共享,有些命令则仅在其中一种或两种调试器中可用。
有些命令仅在实时调试模式下可用,而另一些命令仅在调试转储文件时可用。
有些命令仅在用户模式调试期间可用,而另一些命令仅在内核模式调试期间可用。
有些命令仅在目标系统运行于特定处理器上时可用。有关所有命令及其限制的更多信息,请参阅“调试器命令”。
5. 编辑命令,重复命令,和取消命令
当你输入一个命令时, 你可以使用标准编辑键:
(1) 使用 ↑ 键和 ↓ 键来查找前面执行过的命令。
(2) 使用空格键、Delete键、Insert键、← 键和 → 键来编辑当前命令。
(3) 按 Esc 键清除当前命令行内容。
你可以按 Tab 键自动补全文本输入。在任何调试器中,输入至少一个字符后按 Tab 键即可自动补全命令。反复按 Tab 键可在文本补全选项之间循环切换,按住 Shift 键并按 Tab 键可向后循环切换。你还可以在文本中使用通配符,然后按 Tab 键展开以显示所有文本补全选项。例如,如果你输入 fo*!ba 然后按 Tab 键,调试器将展开显示所有以“ba”开头的符号,以及所有模块名称以“fo”开头的模块。再举一个例子,你可以通过输入 !*prcb 然后按 Tab 键来补全所有包含“prcb”的扩展命令。
使用 Tab 键进行文本补全时,如果文本片段以句点 (.) 开头,则会匹配点命令。如果文本片段以感叹号 (!) 开头,则会匹配扩展命令。否则,会匹配符号。使用 Tab 键输入符号时,按下 Tab 键会补全代码和类型符号以及模块名称。如果没有明显的模块名称,则会补全本地符号和模块名称。如果提供了模块或模块模式,符号补全功能会根据所有匹配项补全代码和类型符号。
在调试器命令窗口中,你可以选择并按住(或右键单击)将选择内容复制到剪贴板,然后在命令容器右键单击将其自动粘贴到你正在键入的命令中。
最大命令长度为 4096 个字符。但是,如果你是从内核调试器控制用户模式调试器,则最大行长度为 512 个字符。
在 CDB 和 KD 中,单独按 Enter 键即可重复执行上一个命令。在 WinDbg 中,你可以启用或禁用此功能。有关此功能的更多信息,请参阅“回车(重复上一个命令)”。
如果你执行的最后一个命令显示过长,而你想将其截断,请在 CDB 或 KD 中使用 CTRL+C 键。在 WinDbg 中,请使用“调试(go)”|“中断(break)”或按 CTRL+BREAK 键。
在内核模式调试中,可以通过按 CTRL+C 取消目标计算机键盘上的命令。
你可以使用 .cls(清除屏幕)命令清除调试器命令窗口中的所有文本。此命令会清除整个命令历史记录。在 WinDbg 中,你还可以使用“编辑 | 清除命令输出”命令清除命令历史记录,或者在调试器命令窗口的快捷菜单中选择“清除命令输出”。(或者类似 Clear Window之类的命令,不同的版本略有差异。)
5. 描述语法
许多命令和扩展命令都接受表达式作为参数。调试器会在执行命令之前对这些表达式进行求值。有关表达式的更多信息,请参阅“求值表达式”。
6. 别名
别名是文本宏,可用于避免重复输入复杂的短语。别名有两种类型。有关别名的更多信息,请参阅“使用别名”。
7. 自重复命令
(1) j(Execute If-Else)条件命令
(2) z(Execute While)条件命令
(3) ~e(具体线程命令)条件命令
(4) !list扩展命令
8. 控制滚动
你可以使用滚动条查看之前的命令及其输出。
使用 CDB 或 KD 时,任何键盘输入都会自动将调试器命令窗口滚动到底部。
在 WinDbg 中,每当命令产生输出或你按下 Enter 键时,显示都会自动滚动到底部。如果你想禁用此自动滚动功能,请在“视图”菜单中选择“选项”,然后取消选中“自动滚动”复选框。(最新版是在命令窗口tab窗口点右键,然选择[Turn off auto scrolling] 。)
9. WinDbg文本特征
在 WinDbg 中,你可以使用多种附加功能来更改调试器命令窗口中文本的显示方式。你可以在 WinDbg 窗口中访问其中一些功能,在调试器命令窗口的快捷菜单中访问一些功能,还可以通过选择相应的菜单图标来访问其他功能。
(1) 快捷菜单中的“自动换行(Word wrap)”命令可以启用或禁用自动换行功能。此命令会影响整个窗口,而不仅仅是更改此状态后使用的命令。由于许多命令和扩展程序会生成格式化的显示内容,因此我们通常不建议启用自动换行。
(2) “编辑(Edit) | 添加到命令输出(Add to Command Output)”菜单命令会在调试器命令窗口中添加注释。快捷菜单上的“添加到命令输出”命令具有相同的效果。
(3) 你可以自定义调试器命令窗口的文本和背景颜色。你可以为不同类型的文本指定不同的颜色。例如,你可以将自动寄存器输出显示为一种颜色,将错误消息显示为另一种颜色,将 DbgPrint 消息显示为第三种颜色。
· 你可以使用 WinDbg 调试信息窗口的所有常用功能,例如自定义字体和使用特殊编辑命令。
10. 远程调试
当你通过调试器执行远程调试时,调试客户端可以访问的命令数量有限。要更改客户端可以访问的命令数量,请使用 -clines 命令行选项或 _NT_DEBUG_HISTORY_SIZE 环境变量。


2万+

被折叠的 条评论
为什么被折叠?



