• WinDbg命令窗口的使用


    调试器命令窗口是windbg中的主要调试信息窗口。可以在此窗口中输入调试程序命令并查看命令输出。Windbg的命令窗口是我们进行调试时,主要打交道的窗口。界面如下

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

    • 在底部的小窗格中,输入命令。
    •  在上面的大窗格中,可以查看命令输出。

    打开和关闭命令窗口

    通常我们通过打开exe程序、附加到进程或打开dmp文件进行调试时,会自动打开此窗口,但很有可能我们关闭掉了这个窗口,有如下重新打开方式:

    • 点击工具栏按钮
    • 从“视图”菜单中选择“命令”。
    • 快捷键 ALT+1

    可以通过如下方式关闭此窗口:

    • 点击窗口右上角的
    • 快捷键ALT+SHIFT+1
    • 热键 CTRL+F4
    • 标题栏右键菜单"Close"

    通过上面的方式,我们可以随意关闭打开此窗口。

    调试器命令窗口提示

    在执行用户模式调试时,“调试器命令”窗口中的提示类似于以下示例。

    2:005>
    

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

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

    3:2:005>
    

    在本例中,3是当前系统号,2是当前进程号,005是当前线程号。
    在只有一个处理器的目标计算机上执行内核模式调试时,提示如下所示。

    kd>
    

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

    0: kd> 
    

    如果调试器正忙于处理以前发出的命令,则新命令将暂时不被处理,尽管可以添加到命令缓冲区。此外,还可以在windbg中使用菜单命令和快捷键。当windbg处于忙碌状态时,以下指示器将代替提示出现:

    *BUSY* 
    

     可以使用.pcmd(set prompt command)命令将文本添加到此提示。

    命令操作

    输入正确的命令,敲Enter键,执行命令。除了这种操作外,我们还可以进行编辑、重复和取消命令的操作。

    输入命令时可以使用标准编辑键:
    • 使用向上和向下箭头键查找以前的命令。
    • 使用退格键、删除键、插入键、左箭头键和右箭头键编辑当前命令。
    • 按Esc键清除当前行。
    您可以按Tab键自动完成文本输入。在任何调试程序中,输入至少一个字符后按Tab键自动完成命令。反复按Tab键可循环显示文本完成选项,按住SHIFT键并按Tab可向后循环。您还可以在文本中使用通配符,然后按Tab键展开到完整的文本完成选项集。例如,如果键入fo*!ba然后按tab键,调试器将扩展到以“ba”开头的所有符号集,在所有模块中,模块名以“fo”开头。作为另一个例子,您可以通过键入来完成所有包含“prcb”的扩展命令!*prcb,然后按tab。
    使用tab键执行文本完成时,如果文本片段以句点(.)开头,则文本与点命令匹配。如果文本片段以感叹号(!)开头,文本与扩展命令匹配。否则,文本将与符号匹配。当使用tab键输入符号时,按tab键完成代码并键入符号和模块名称。如果没有明显的模块名,则完成本地符号和模块名。如果给定了模块或模块模式,则符号完成将完成所有匹配项中的代码和类型符号。
    您可以在调试器命令窗口中单击鼠标右键,以自动将剪贴板的内容粘贴到正在键入的命令中。最大命令长度为4096个字符。但是,如果从内核调试程序控制用户模式调试程序,则最大行长度为512个字符。如果您发出的最后一个命令显示一个长的显示,并且您希望将其关闭,在windbg中,使用debug_break或按ctrl+break。在内核模式调试中,可以通过按ctrl+c从目标计算机的键盘取消命令。可以使用.cls(clear screen)命令从调试器命令窗口中清除所有文本。此命令清除整个命令历史记录。在windbg中,可以通过使用edit_clear command output命令或单击Debugger命令窗口快捷菜单上的clear command output来清除命令历史记录。

    控制滚动

    可以使用滚动条查看以前的命令及其输出。当您使用cdb或kd时,任何键盘条目都会自动向下滚动到调试器命令窗口的底部。在windbg中,每当命令生成输出或按Enter键时,显示器会自动向下滚动到底部。如果要禁用此自动滚动,请单击“视图”菜单上的选项,然后清除“自动滚动”复选框

    windbg文本功能

    在windbg中,您可以使用一些附加功能来更改文本在调试器命令窗口中的显示方式。您可以在windbg窗口中访问其中的一些功能,一些在调试器命令窗口的快捷菜单中,还有一些通过单击相应的菜单图标来访问。快捷菜单上的“自动换行”命令可打开和关闭自动换行状态。此命令影响整个窗口,而不仅仅是更改此状态后使用的命令。因为许多命令和扩展都会生成格式化的显示,所以我们通常不建议使用自动换行。“编辑添加到命令输出”菜单命令在“调试器命令”窗口中添加注释。快捷菜单上的“添加到命令输出”命令具有相同的效果。可以自定义用于调试器命令窗口的文本和背景的颜色。可以为不同类型的文本指定不同的颜色。例如,可以用一种颜色显示自动寄存器输出,用另一种颜色显示错误消息,用第三种颜色显示dbgprint消息。有关此自定义的详细信息,请参见视图选项。您可以使用windbg调试信息窗口中常见的所有功能,例如自定义字体和使用特殊的编辑命令。

    命令窗口的菜单

    在标题栏右键弹出如下菜单

    • Add to command output 添加到命令输出向命令输出添加注释,类似于编辑添加到命令输出命令。
    • Clear command output 清除命令输出将删除窗口中的所有文本。
    • Choose text color and recolor selection 选择文本颜色并对所选内容重新着色…打开一个对话框,使您能够选择文本颜色以显示在调试器命令窗口中选择的文本。
    • Word wrap 自动换行打开和关闭自动换行状态。此命令影响整个窗口,而不仅仅是选择此状态后使用的命令。由于许多命令和扩展都会生成格式化的显示,因此不建议使用自动换行。
    • Mark current location 标记当前位置在命令窗口中的当前光标位置设置标记。标记的名称是光标右侧行的内容。
    • Go to mark 转到标记使窗口滚动,使包含所选标记的行位于窗口顶部。
    • Always floating 始终浮动会使窗口保持未停靠状态,即使将其拖到停靠位置。
    • Move with frame “随帧移动”会使窗口在移动windbg帧时移动,即使该窗口已松开。有关固定窗口、选项卡式窗口和浮动窗口的详细信息,请参见定位窗口。
  • 相关阅读:
    LeetCode 64. 最小路径和
    LeetCode 344. 反转字符串
    LeetCode 162. 寻找峰值
    LeetCode 227. 基本计算器 II
    LeetCode 232. 用栈实现队列
    LeetCode 160. 相交链表
    LeetCode 112. 路径总和
    谈谈反作弊风控的实践经验
    LeetCode 704. 二分查找
    Hive SQL rank()/dense_rank()/row_number()的区别
  • 原文地址:https://www.cnblogs.com/yilang/p/11419546.html
Copyright © 2020-2023  润新知