DEBUG命令使用解析五

来源:互联网 发布:省市区json 编辑:程序博客网 时间:2024/06/06 07:16

Debug:Q(退出)   停止 Debug 会话,不保存当前测试的文件。   当您键入 q 以后,控制返回到 Windows 2000 的命令提示符。   q   参数   该命令不带参数。   有关保存文件的信息,请单击“相关主题”列表中的 Debug W(写入)。   ++++   Debug:R(寄存器)   显示或改变一个或多个 CPU 寄存器的内容。   r [register-name]   参数   无   如果在没有参数的情况下使用,则 r 命令显示所有寄存器的内容以及寄存器存储区域中的标志。   register-name   指定要显示其内容的寄存器名。   有关显示内存部分内容的信息,请单击“相关主题”列表中的 Debug D(转储)。   有关反汇编字节的信息,请单击“相关主题”列表中的 Debug U(反汇编)。   ++   范例   要查看所有寄存器的内容、所有标记的状态和当前位置的指令解码表,请键入以下命令:   r   如果当前位置是 CS:11A,显示外观将类似于以下内容:   AX=0E00 BX=00FF CX=0007 DX=01FF SP=039D BP=0000 SI=005C DI=0000   DS=04BA ES=04BA SS=04BA CS=O4BA IP=011A NV UP DI NG NZ AC PE NC   04BA:011A CD21 INT 21   要只查看标志的状态,请键入以下命令:   rf   Debug 按以下格式显示信息:   NV UP DI NG NZ AC PE NC - _   现在,您可以按任意顺序键入一个或多个有效的标志值,其中可以有或没有空格,如下所示:   nv up di ng nz ac pe nc - pleicy   Debug 结束 r 命令并显示 Debug 提示符。要查看更改,请键入 r 或 rf 命令。Debug 将显示以下内容:   NV UP EI PL NZ AC PE CY - _   按 ENTER 返回到 Debug 提示符。   ++   说明   使用 r 命令   如果指定了寄存器名称,Windows 2000 将显示以十六进制标记表示的寄存器的 16 位值,并将冒号显示为提示符。如果要更改包含在寄存器中的值,除非键入新值并按 ENTER 键;否则,请按 ENTER 键返回 Debug 提示符。   有效寄存器名   以下是 register-name 的有效值:ax、bx、cx、dx、sp、bp、si、di、ds、es、ss、cs、ip、pc 及 f。ip 和 pc 都引用指令指针。   如果指定寄存器名称,而不是从前面的列表中指定,Windows 2000 将显示以下消息:   br error   使用 f 字符而不是寄存器名   如果键入 f 字符代替寄存器名,Debug 将每个标记的当前设置显示为两字母代码,然后显示 Debug 提示符。要更改标志的设置,请从下表中键入适当的两字母代码:   标志名 设置 清除   溢出 ov nv   方向 dn(减) up(增)   中断 ei(启用) di(禁用)   正负 ng(负) pl(正)   零 zr nz   辅助进位 ac na   奇偶校验 pe(偶校验) po(奇校验)   进位 cy nc   可以按任何顺序键入新的标志值。不需要在这些值之间留出空格。要停止 r 命令,请按 ENTER 键。任何没有指定新值的标志保持不变。   用 r 命令显示的邮件   如果为标记指定了多个值,Debug 将显示以下消息:   df error   如果指定没有在前面的表中列出的标志代码,Debug 将显示以下消息:   bf error   在这两种情况下,Debug 将忽略所有在无效项目之后指定的设置。   Debug 的默认设置   在启动 Debug 时,会将段寄存器设置到空闲内存的低端,指令指针设置为 0100h,清除所有标志,并且将其余寄存器设置为零,除了被设置为 FFEEh 的 sp 之外。   ++++   Debug:S(搜索)   在某个地址范围搜索一个或多个字节值的模式。   s range list   参数   range   指定要搜索范围的开始和结束地址。有关 range 参数有效值的信息,请单击“相关主题”列表中的 Debug。   list   指定一个或多个字节值的模式,或要搜索的字符串。用空格或逗号分隔每个字节值和下一个字节值。将字符串值包括在引号中。   ++   范例   假定需要查找包含值 41 并且范围从 CS:100 到 CS:110 的所有地址。为此,请键入以下命令:   scs:100 110 41   Debug 按以下格式显示结果:   04BA:0104   04BA:010D   -   以下命令在 CS:100 到 CS:1A0 的范围内搜索字符串“Ph”。   scs:100 1a0 "Ph"   ++   说明   如果 list 参数包含多个字节值,Debug 将只显示出现字节值的第一个地址。如果 list 只包含一个字节值,Debug 将显示指定范围内出现该值的所有地址。   ++++   Debug:T(跟踪)   执行一条指令,并显示所有注册的内容、所有标志的状态和所执行指令的解码形式。   t [=address] [number]   参数   =address   指定 Debug 启动跟踪指令的地址。如果省略 address 参数,跟踪将从程序的 CS:IP 寄存器所指定的地址开始。有关 address 参数有效值的信息,请单击“相关主题”列表中的 Debug。   number   指定要跟踪的指令数。该值必须是十六进制数。默认值为 1。   有关执行循环、重复的字符串指令、软件中断或子例程的信息,请单击“相关主题”列表中的 Debug P(执行)。   有关执行当前内存中程序的信息,请单击“相关主题”列表中的 Debug G(转向)。   ++   范例   要执行一个指令(CS:IP 指向的指令),然后显示寄存器的内容、标志的状态以及指令的解码形式,请键入以下命令:   t   如果程序中的指令位于 04BA:011A,Debug 可能显示下列信息:   AX=0E00 BX=00FF CX=0007 DX=01FF SP=039D BP=0000 SI=005C DI=0000   DS=04BA ES=04BA SS=04BA CS=O4BA IP=011A NV UP DI NG NZ AC PE NC   04BA:011A CD21 INT 21   ++   说明  跟踪只读内存中的指令   t 命令使用 8086 或 8088 微处理器的硬件跟踪模式。因此,也可以跟踪存储在只读内存 (ROM) 中的指令。   使用地址参数   必须在 address 参数之前使用等号 (=) 以便将它与 number 参数区分。   ++++