DEBUG系统的使用 2.docx
- 文档编号:3818449
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:18
- 大小:21.93KB
DEBUG系统的使用 2.docx
《DEBUG系统的使用 2.docx》由会员分享,可在线阅读,更多相关《DEBUG系统的使用 2.docx(18页珍藏版)》请在冰豆网上搜索。
DEBUG系统的使用2
DEBUG系统的使用
一、DEBUG的作用
DEBUG是DOS提供的用于程序调试的系统,作为DOS的外部命令随DOS的其它外部命令一起由DOS的提供产商向用户提供。
因此用户在使用DEBUG系统时一定要注意当前用户所使用的DOS的外部命令中是否提供该命令(若DOS命令不全,有可能没有此命令)。
二、DEBUG的使用
1、DEBUG的调用
由于DEBUG是DOS的外部命令,因此必须在DOS的提示符状态下进行调用。
调用的方法如下:
C:
\>DEBUG[FILENAME]
此处FILENAME应是文件的全名,即应包括文件的主名和扩展名(若文件有扩展名),如文件不在当前目录,则还因包括文件所存放的目录名。
但文件名也可以省略,此时表示(暂时)不调用任何文件。
(DOS的提示符不一定是“C:
\>”,可以是其它的形式,请使用者根据具体情况自行确定。
)当进入了DEBUG系统后,系统的状态是在屏幕的左边显示一短杠:
-
此时用户可以在此进行相应的调试工作。
用户也可以在调入DEBUG系统的同时调入要调试的程序,调用的方法如下:
C:
\>DEBUGTEST.COM
若在当前目录中能找到相应的文件,则系统在屏幕的左边显示一短杠:
-
若在当前目录中能找不到相应的文件,则系统在屏幕上显示:
filenotfind
并在屏幕的左边显示一短杠:
-
注意:
DEBUG调试程序只能调用当前目录的文件。
2、DEBUG的调试命令
(1)汇编命令A(Assemble)
格式:
A[address]
说明:
address是要进行汇编程序(编码)输入的首地址,可省略。
如:
-a
16D8:
0100movah,2
16D8:
0102moval,1
16D8:
0104movbx,0200
16D8:
0107movcx,0001
16D8:
010Amovdx,0001
16D8:
010Dint13
16D8:
010Fint3
16D8:
0110
-
或:
-a200
16D8:
0200movah,2
16D8:
0202moval,1
16D8:
0204movbx,0200
16D8:
0207movcx,0001
16D8:
020Amovdx,0001
16D8:
020Dint13
16D8:
020Fint3
16D8:
0210
-
如在操作过程中有错误,系统会及时地通知操作者并要求操作者重新输入。
如:
-a
16D8:
0100movah,211
^Error
16D8:
0100
系统把操作者在DEBUG调试系统中输入的所有数字均按十六进制数处理(下同)。
(2)反汇编命令U(Unassemble)
格式:
U[address]或U[range]
说明:
address是要反汇编的指令存储单元的首地址,range是要反汇编指令的存储单元的首地址和末地址,均可省略。
如将上述例子进行反汇编的情行如下:
C:
\>DEBUGEXAFDEG.COM
-u
16A7:
01001EPUSHDS
16A7:
010133C0XORAX,AX
16A7:
010350PUSHAX
16A7:
0104B012MOVAL,12
16A7:
0106B90400MOVCX,0004
16A7:
010932DBXORBL,BL
16A7:
010BD0E0SHLAL,1
16A7:
010DD0D3RCLBL,1
16A7:
010FE2FALOOP010B
16A7:
0111B104MOVCL,04
16A7:
0113D2E8SHRAL,CL
16A7:
0115CBRETF
16A7:
01160101ADD[BX+DI],AX
16A7:
01180201ADDAL,[BX+DI]
16A7:
011A0000ADD[BX+SI],AL
16A7:
011C00FFADDBH,BH
16A7:
011EFF01INCWORDPTR[BX+DI]
-
若可选项省略,一次最多可反汇编存放于32个存储单元中的指令码,因此极有可能将内存中的数据垃圾或其它方面的数据也当成指令代码来进行反汇编,如上述例子存于的单元3548:
010E ̄3548:
011F中的数据就被当成指令代码来进行反汇编。
也可以指定要进行反汇编的单元范围,如:
-u100115
16A7:
01001EPUSHDS
16A7:
010133C0XORAX,AX
16A7:
010350PUSHAX
16A7:
0104B012MOVAL,12
16A7:
0106B90400MOVCX,0004
16A7:
010932DBXORBL,BL
16A7:
010BD0E0SHLAL,1
16A7:
010DD0D3RCLBL,1
16A7:
010FE2FALOOP010B
16A7:
0111B104MOVCL,04
16A7:
0113D2E8SHRAL,CL
16A7:
0115CBRETF
-
(3)显示存储单元命令D(Dump)
格式:
D[address]或D[range]
说明:
address是要显示的存储单元的首地址,range是要显示的存储单元的首地址和末地址,均可省略。
如:
-d
16D8:
01000F00B98AFFF3AE47-61031F8BC34812B1.......Ga....H..
16D8:
0110048BC6F70A0AD0D3-48DA2BD03400C716........H.+.4...
16D8:
012000DBD2D3E003F08E-DA8BC716C2B60116................
16D8:
0130C016F88EC2AC8AD0-00004EAD8BC8468A..........N...F.
16D8:
0140C224FE3CB07505AC-F3AAA00AEB063CB2.$.<.u........<.
16D8:
0150756D6D13A8015014-74B1BE32018D8B1Eumm...P.t..2....
16D8:
01608EFC12A833D229E3-138BC203C3690200....3.)......i..
16D8:
01700BF883FFFF741126-011DE2F3810094FA.....t.&........
或:
-d1201af
16D8:
012000DBD2D3E003F08E-DA8BC716C2B60116................
16D8:
0130C016F88EC2AC8AD0-00004EAD8BC8468A..........N...F.
16D8:
0140C224FE3CB07505AC-F3AAA00AEB063CB2.$.<.u........<.
16D8:
0150756D6D13A8015014-74B1BE32018D8B1Eumm...P.t..2....
16D8:
01608EFC12A833D229E3-138BC203C3690200....3.)......i..
16D8:
01700BF883FFFF741126-011DE2F3810094FA.....t.&........
16D8:
018000F0741681C20010-EBDC5B4042261E83..t.......[@B&..
16D8:
0190EF101990EB45A1E2-978B3EFB8B360A80.....E....>..6..
16D8:
01A09ACFF0010602002D-B10A00BBBBF5FA8E.......-........
注意:
以上数据是随机的,操作者在操作过程中看到的结果可能与之不同。
(4)内存数据比较指令C(Compare)
格式:
Drangeaddress
说明:
range是要比较的存储数据存储单元的首地址和末地址,address是要比较的另一组数据存储单元的首地址。
系统将两组数据存储单元中数据不同的存储单元的地址码及各存储单元中的数据均显示出来,若要比较的数据存储单元的范围定得太大且两组数据存储单元中的数据有许多的不同,则有可能出现一个屏幕无法完全显示的情况,此时最好能把要比较的数据存储单元的范围定得小些。
如;
-c10010f200
3548:
01000E033548:
0200
3548:
0101F3F83548:
0201
3548:
0102A6BE3548:
0202
3548:
010374063548:
0203
3548:
010424003548:
0204
3548:
0105BAB93548:
0205
3548:
010600FA3548:
0206
3548:
010701053548:
0207
3548:
0108B8F33548:
0208
3548:
010901A43548:
0209
3548:
010A02BE3548:
020A
3548:
010BB7043548:
020B
3548:
010C04133548:
020C
3548:
010DCC813548:
020D
3548:
010EB3FE3548:
020E
3548:
010F3CEC3548:
020F
-
系统列出了两组数据存储单元中的数据不同的各单元的地址码及各存储单元中的数据,下面为这两组数据存储单元中的数据:
-d10010f
3548:
01000EF3A67424BA0001-B80102B704CCB33C...t$..........<
-d20020f
3548:
020003F8BE0600B9FA05-F3A4BE041381FEEC................
-
(5)检索命令S(Search)
格式:
Srangelist
说明:
在指定的范围内搜索指定的字符或字符串,并在屏幕上显示所检索的字符或字符串的存放单元的地址码,若未检索到则在屏幕上无任何显示。
如:
-s10002000'abc'
-
(未检索到)
-s10002000'a'
168D:
1025
168D:
1823
-
(检索到:
在168D:
1025、168D:
1823两处)
(6)输入命令E(Enter)
输入命令E有两种格式。
格式一、Eaddress[list]
格式二、Eaddress
说明:
list是表示要输入的数据表,以字节为单位。
如:
-e200f3'abcde'24
直接将数据输入到指定的存储单元中(此处共输入七个单元:
F3、'a'、'b'、'c'、'd'、'e'、24),或:
-e200
16D8:
02004D.E2.4D.ED.4D.20F8.34
──
-
对其中部分存储单元的内容进行修改,对其中不需修改的部分轻击空格键跳过,但不能击回车键,在此操作中击回车键表示命令结束。
如在上述操作中前四个存储单元的内容不需修改,故在此操作时只需在当前单元后面轻击空格键即可,当在屏幕上出现要修改的内容时就在所显示的内容后面直接输入新的内容。
(7)填写命令F(Fill)
格式:
Frangelist
说明:
range由要输入数据的存储区间的首地址和末地址组成,list为要输入的数据信息表。
如:
-f1001041,2,3,4,5
-d10010f
247A:
01000102030405F3AE47-61031F8BC34812B1.......Ga....H..
─────
输入五个数据于五个单元中,若要输入的数据数少于所指定的单元数时,则用所要输入的数据重复地去填充剩余的单元,如:
-f10010a1,2,3,4,
-d10010f
247A:
01000102030401020304-0102038BC34812B1.............H..
────━━━━—──
-
若要输入的数据数多于所指定的单元数,则只输入前面的几个数据,如:
-f1001031,2,3,4,5,6
-d10010f
247A:
010001020304FFF3AE47-61031F8BC34812B1.......Ga....H..
────
-
(8)寄存器内容检查和修改命令R(Register)
寄存器内容检查和修改命令R有两种格式。
格式一(寄存器内容检查命令)、R
格式二(寄存器内容修改命令)、Rregistername
说明:
registername是要修改的寄存器名,必须是一个十六位寄存器,如:
-r
AX=0000BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000
DS=247AES=247ASS=247ACS=247AIP=0100NVUPEIPLNZNAPONC
247A:
01000FDB0F
显示所有寄存器的内容,包括程序状态字寄存器的内容,也可逐个检查和修改寄存器的内容,但每次只能逐个检查和修改一个寄存器的内容。
如:
-rdx
DX0000;DX寄存器的原内容
:
1234;输入寄存器的新内容
(9)跟踪命令T(Trace)
跟踪命令T有两种格式。
格式一、T[=address]
格式二、T[=address][value]
说明:
address是被跟踪指令的首地址,value是要跟踪的指令的条数。
如没有指定首地址,系统将根据当前的CS:
IP值来决定要执行哪条指令,如没有指定要跟踪的的指令条数,则系统默认一次跟踪一条指令(下同)。
当每条被跟踪指令执行后,系统将所有寄存器的内容均在屏幕上显示出来。
如:
C:
\>DEBUG
-t
AX=0000BX=0000CX=0016DX=0000SP=FFFCBP=0000SI=0000DI=0000
DS=2AE1ES=2AE1SS=2AE1CS=2AE1IP=0101NVUPEIPLNZNAPONC
2AE1:
010133C0XORAX,AX
-t
AX=0000BX=0000CX=0016DX=0000SP=FFFCBP=0000SI=0000DI=0000
DS=2AE1ES=2AE1SS=2AE1CS=2AE1IP=0103NVUPEIPLZRNAPENC
2AE1:
010350PUSHAX
-t
AX=0000BX=0000CX=0016DX=0000SP=FFFABP=0000SI=0000DI=0000
DS=2AE1ES=2AE1SS=2AE1CS=2AE1IP=0104NVUPEIPLZRNAPENC
2AE1:
0104B012MOVAL,12
-t
AX=0012BX=0000CX=0016DX=0000SP=FFFABP=0000SI=0000DI=0000
DS=2AE1ES=2AE1SS=2AE1CS=2AE1IP=0106NVUPEIPLZRNAPENC
2AE1:
0106B90400MOVCX,0004
一次跟踪一条指令,也可以一次跟踪若干条指令,如一次跟踪三条指令:
-t=1003
AX=0000BX=0000CX=0016DX=0000SP=FFFCBP=0000SI=0000DI=0000
DS=4299ES=4299SS=4299CS=4299IP=0101NVUPEIPLNZNAPONC
4299:
010133C0XORAX,AX
AX=0000BX=0000CX=0016DX=0000SP=FFFCBP=0000SI=0000DI=0000
DS=4299ES=4299SS=4299CS=4299IP=0103NVUPEIPLZRNAPENC
4299:
010350PUSHAX
AX=0000BX=0000CX=0016DX=0000SP=FFFABP=0000SI=0000DI=0000
DS=4299ES=4299SS=4299CS=4299IP=0104NVUPEIPLZRNAPENC
4299:
0104B012MOVAL,12
-t3
AX=0012BX=0000CX=0016DX=0000SP=FFFABP=0000SI=0000DI=0000
DS=4299ES=4299SS=4299CS=4299IP=0106NVUPEIPLZRNAPENC
4299:
0106B90400MOVCX,0004
AX=0012BX=0000CX=0004DX=0000SP=FFFABP=0000SI=0000DI=0000
DS=4299ES=4299SS=4299CS=4299IP=0109NVUPEIPLZRNAPENC
4299:
010932DBXORBL,BL
AX=0012BX=0000CX=0004DX=0000SP=FFFABP=0000SI=0000DI=0000
DS=4299ES=4299SS=4299CS=4299IP=010BNVUPEIPLZRNAPENC
4299:
010BD0E0SHLAL,1
-t3
AX=0024BX=0000CX=0004DX=0000SP=FFFABP=0000SI=0000DI=0000
DS=4299ES=4299SS=4299CS=4299IP=010DNVUPEIPLNZACPENC
4299:
010DD0D3RCLBL,1
AX=0024BX=0000CX=0004DX=0000SP=FFFABP=0000SI=0000DI=0000
DS=4299ES=4299SS=4299CS=4299IP=010FNVUPEIPLNZACPENC
4299:
010FE2FALOOP010B
AX=0024BX=0000CX=0003DX=0000SP=FFFABP=0000SI=0000DI=0000
DS=4299ES=4299SS=4299CS=4299IP=010BNVUPEIPLNZACPENC
4299:
010BD0E0SHLAL,1
-t3
AX=0048BX=0000CX=0003DX=0000SP=FFFABP=0000SI=0000DI=0000
DS=4299ES=4299SS=4299CS=4299IP=010DNVUPEIPLNZACPENC
4299:
010DD0D3RCLBL,1
AX=0048BX=0000CX=0003DX=0000SP=FFFABP=0000SI=0000DI=0000
DS=4299ES=4299SS=4299CS=4299IP=010FNVUPEIPLNZACPENC
4299:
010FE2FALOOP010B
AX=0048BX=0000CX=0002DX=0000SP=FFFABP=0000SI=0000DI=0000
DS=4299ES=4299SS=4299CS=4299IP=010BNVUPEIPLNZACPENC
4299:
010BD0E0SHLAL,1
-t3
AX=0090BX=0000CX=0002DX=0000SP=FFFABP=0000SI=0000DI=0000
DS=4299ES=4299SS=4299CS=4299IP=010DOVUPEINGNZACPENC
4299:
010DD0D3RCLBL,1
AX=0090BX=0000CX=0002DX=0000SP=FFFABP=0000SI=0000DI=0000
DS=4299ES=4299SS=4299CS=4299IP=010FNVUPEINGNZACPENC
4299:
010FE2FALOOP010B
AX=0090BX=0000CX=0001DX=0000SP=FFFABP=0000SI=0000DI=0000
DS=4299ES=4299SS=4299CS=4299IP=010BNVUPEINGNZACPENC
4299:
010BD0E0SHLAL,1
-t3
AX=0020BX=0000CX=0001DX=0000SP=FFFABP=0000SI=0000DI=0000
DS=4299ES=4299SS=4299CS=4299IP=010DOVUPEIPLNZACPOCY
4299:
010DD0D3RCLBL,1
AX=0020BX=0001CX=0001DX=0000SP=FFFABP=0000SI=0000DI=0000
DS=4299ES=4299SS=4299CS=4299IP=010FNVUPEIPLNZACPONC
4299:
010FE2FALOOP010B
AX=0020BX=0001CX=0000DX=0000SP=FFFABP=0000SI=0000DI=0000
DS=4299ES=4299SS=4299CS=4299IP=0111NVUPEIPLNZACPONC
4299:
0111B104MOVCL,04
-t3
AX=0020BX=000
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DEBUG系统的使用 DEBUG 系统 使用