您的位置:首页 > 理论基础 > 计算机网络

[网络整理]DEBUG命令使用解析五

2009-03-16 21:17 141 查看
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 参数区分。

  ++++
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: