调试工具-DEBUG

来源:互联网 发布:冰糖辣条淘宝 编辑:程序博客网 时间:2024/05/16 05:13
DEBUG

启动DEBUG的一般命令如下:

DEBUG  文件名 [参数表]

其中:文件名指定被调试的文件,其包括名和后缀,参数表是被调试文件运行时所需要的参数。

被调试的文件可以是系统中的任何文件,但通常它们的后缀为EXECOM。当DEBUG启动成功后,将显示连接符“-”,这时,可输入各种命令。

表1 DEBUG中标志位的符号表示

标志名称 溢出OF 方向DF 中断IF 负号SF 零ZF 辅助进位AF 奇偶PF 进位CF 置位状态 OV DN EI NG ZR AC PE CY 复位状态 NV UP DI PL NZ NA PO NC

表2 DEBUG命令及其含义

 命令格式 功能说明 A [地址] 输入汇编指令 C [范围]  起始地址 对由“范围”指定的区域与“起始地址”指定的同大小区域进行比较,显示不相同的单元 D [范围] 显示指定范围内的内存单元内容 E 地址  字节值表 用值表中的值替换从“地址”开始的内存单元内容 F 范围  字节值表 用指定的字节值表来填充内存区域 G [=起始地址]  [断点地址] 从起点(或当前地点)开始执行,到终点结束 H 数值1  数值2 显示二个十六进制数值之和、差 I 端口地址 从端口输入 L [地址 [驱动器号 扇区 扇区数]] 从磁盘读 M 范围  地址 把“范围”内的字节值传送到从“地址”开始的单元 N 文件标识符 [文件标识符…] 指定文件名,为读/写文件做准备 O 端口地址  字节值 向端口输出 P [=地址]  [指令数] 按执行过程,但不进入子程序调用或软中断 Q 退出DEBUG,不保存正在调试的文件 R [寄存器名] 显示和修改寄存器内容 S 范围  字节值表 在内存区域内搜索指定的字节值表。如果找到,显示起始地址,否则,什么也不显示 T [=地址]  [指令数] 跟踪执行,从起点(或当前地点)执行若干条指令 U [范围] 反汇编,显示机器码所对应的汇编指令 W [地址 [驱动器号  扇区 扇区数]] 向磁盘写内容,(BX、CX)为写入字节数

关于参数的几点说明:

1、进制:在DEBUG中输入或显示的数据都是十六进制形式;

2、分隔:命令和参数、参数和参数之间要用空格、逗号或制表符等分隔;

3、地址:用“段值:偏移量”的形式来表示地址,也可用段寄存器来代表“段值”;例如:1000:0,ds:10,cs:30等;

4、范围:用来表示地址范围,从哪个地址开始,到哪个地址结束。它有二种表示方式:

地址 地址——前者表示起始地址,要用“段值:偏移量”来表达,后者表示终止地址,只用“偏移量”来表示;

地址 长度——前者表示起始地址,要用“段值:偏移量”来表达,后者表示该区域的大小,用字母’L’开头的数值来表示

例如:100:50 100——段值为100,偏移量从50到100的内存区域,
100:50 L100——段值为100,偏移量从50开始的100个字节区域。

5、端口地址:二位十六进制数值

6、字节值:二位十六进制数值

7、字节值表:由若干个字节值组成,也可以是用引号括起来的字符串

8、驱动器号:0—驱动器A、1—驱动器B、2—驱动器C、3—驱动器D等

关于使用命令的几点说明:

DEBUG中的提示符“-”下才能输入命令,在按“回车”键后,该命令才开始执行 命令是单个字母,命令和参数的大小写可混合输入 可用F1F2F3InsDel和光标移动键等来编辑本行命令 当命令出现语法错误时,将在出错位置显示“^ Error 可用^C^Break来终止当前命令的执行,还可用^S来暂停屏幕显示(当连续不断地显示信息时)

例2.1 启动DEBUG,并装入test.exe文件(假设该文件已存在)。

解: 方法1: 方法2: …/>debug test.exe …/>debug -n test.exe -l

例2.2 比较以DS为段值,偏移量从10到50的内存区域与从地址100:20开始的内存区域。
解:-C DS:10 50 100:20  或  -C DS:10 L41 100:20

例2.3 显示以DS为段值,偏移量从10到50内存区域的单元内容,然后用’abc’来填充它。
解:-D DS:10 50  或  -D DS:10 L41
  -F DS:10 50 'abc'

例2.4 显示十六进制1234与3421之和、差。
解:-H 1234 4321

例2.5 把数据段区域DS:0-40内的内容传送给从附加段ES:10开始的内存中。
解:-M DS:0 40 ES:10

例2.6 在数据段区域DS:0-40内查找是否有字符串'CIH'。
解:-S DS:0 40 'CIH'

 
原创粉丝点击