windbg 调试器简明手册——第 1 章——命令操作窗口

目录

1.  WinDbg调试器窗口

2.  KD 或 CDB

3.  调试器命令窗口提示

4.  命令种类

5.  编辑命令,重复命令,和取消命令

5.  描述语法

6.  别名

7.  自重复命令

8.  控制滚动

9.  WinDbg文本特征

10.  远程调试


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 环境变量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值