如何使用debug调试

如何使用debug调试,第1张

最基本的 *** 作是:

1, 首先在一个java文件中设断点,然后运行,当程序走到断点处就会转到debug视图下,

2, F5键与F6键均为单步调试,F5是step into,也就是进入本行代码中执行,F6是step over,

也就是执行本行代码,跳到下一行,

3,F7是跳出函数

4,F8是执行到最后。

1.Step Into (also F5) 跳入

2.Step Over (also F6) 跳过

3.Step Return (also F7) 执行完当前method,然后return跳出此method

4.step Filter 逐步过滤 一直执行直到遇到未经过滤的位置或断点(设置Filter:window-preferences-java-Debug-step Filtering)

5.resume 重新开始执行debug,一直运行直到遇到breakpoint

6.hit count 设置执行次数 适合程序中的for循环(设置 breakpoint view-右键hit count)

7.inspect 检查 运算。执行一个表达式显示执行值

8.watch 实时地监视变量的变化

9.我们常说的断点(breakpoints)是指line breakpoints,除了line

breakpoints,还有其他的断点类型配埋:field(watchpoint)breakpoint,method

breakpoint,exception breakpoint.

10.field breakpoint 也叫watchpoint(监视点) 当成员变量被读取或修改时暂挂

11.添加method breakpoint 进入/离开此方法时暂挂(Run-method breakpoint)

12.添加Exception breakpoint 捕抓到Execption时暂挂(待续...)断点属性:

1.hit count 执行多少次数后暂挂 用于循环

2.enable condition 遇到符合你输入条件(为ture\改变时)就暂挂

3.suspend thread 多线程时暂挂此线程

4.suspend VM 暂挂虚拟机

13.variables 视图里的变量可以改变变量值,在variables 视图选李御择变量点击右哪卖岩键--change value.一次来进行快速调试。

14.debug 过程中修改了某些code后--〉save&build--resume--重新暂挂于断点

Debug是一种程序,一种调试工具,说白了就是供程序员检查修改问题的工具。用比较正式的话说Debug是DOS,Windows都提供的实模式(也就是8086方式)程序的调试工具。其实严格来说,Debug是在DOS方式下使用的程序,我们在进入Debug前应该先进入DOS。而就目前我们用的计算机来说,进入DOS有以下两种方法:

1.重启计算机,进入DOS,此时进入的是实模式的DOS。

2.在Windows界面进入DOS,此时进入的是虚拟8086模式的DOS。

讲到这里一定有人会问,实模式和虚拟8086模式什么意思?给大家简单讲一下:

我们所说的CPU工作模式分为实模式和保护模式两种,而虚拟8086是保护模式下一种任务的运行模式,并非CPU的工作模式。大家平时用的Windows系统是运行在保护模式下的,而计算机在刚启动的时候是在实模式下运行,在启动Windows系统时进入保护模式,除非关闭系统,否则不会回到实模式。如果要一直在实模式下运行,那就得使用DOS等实模式下的 *** 作系统。但是在Windows系统中加载的DOS程序是在虚拟8086模式下运行的。当然这里面涉及了一些DOS的相关知识,由于篇幅原因咱们在这儿就不讲了,感兴趣的可以留言评论一起交流。

好了,言慎迟归正传,回到Debug上, 这里基孝姿有一点需要注意,Debug把所有数据都当成字节处理,因此可以用它检查内存中任何地方的字节以及修改任何地方的字节。它可以用于逐指令执行某个程序以验证程序运行的正确性,也可以在机器码这个级别追踪执行过程、比较一个指令执行前后的值以及比较与移动内存中数据的范围,读写文件与磁盘扇区。

值得一提的是,Debug在汇编语言中的应用非常广泛,Debug的命令比较多,大约20多个,和汇编搏绝密切相关的有R命令、D命令、E命令、U命令、T命令、A命令等等,当然每个命令作用不同,比如D是查看内存内容,E是修改内存内容,T是执行一条机器指令等等,还有很多,而且都有固定的命名使用格式,这里就不一一讲了,我们今天主要是让大家知道并理解Debug的意思,关于怎么使用它学有余力的可以自行学习研究一下,好了,就到这里吧。

DEBUG是为汇编语言设计的一种高度工具,它通过单步、设置断点等方式为汇编语言程序员提供了非常有效的调试手段。\x0d\x0a一、DEBUG程序的调用\x0d\x0a在DOS的提示符下,可键入命令:\x0d\x0aC:\DEBUG [D:][PATH][FILENAME[.EXT]][PARM1][PARM2]\x0d\x0a其中,文件名是被调试文件的名字。如用户键入文件,则DEBUG将指定的文件装入存储器中,用户可对其进行调试。如果未键入文件名,则用户可以用当前存储器的内容工作,或者用DEBUG命令N和L把需要的文件装入存储器后再进行调试。命令中的D指定驱动器PATH为路径,PARM1和PARM2则为运行被调试文件时所需要的命令参数。\x0d\x0a在DEBUG程序调入后,将出现提示符,此时就可用橡氏DEBUG命令来调试程序。\x0d\x0a二、DEBUG的主要命令\x0d\x0a1、显示存储单元的命令D(DUMP),格式为:\x0d\x0a_D[address]或_D[range]\x0d\x0a例如,按指定范围显示存储单元内容的方法为:\x0d\x0a-d100 120\x0d\x0a18E4:0100 c7 06 04 02 38 01 c7 06-06 02 00 02 c7 06 08 02 G...8.G.....G...\x0d\x0a18E$:0110 02 02 bb 04 02 e8 02 00-CD 20 50 51 56 57 8B 37 ....h..M PQVW.\x0d\x0a7\x0d\x0a18E4:0120 8B\x0d\x0a其中0100至0120是DEBUG显示的单元内容,左边用十六进制表示每个字节,右边用ASCII字符表示每个字节,·表示不可显示的字符。这里没有指定段地址,D命令自动显示DS段的内容。如果只指定首地址,则显示从首地址开始的80个字节的内容。如果完全没有指定地址,则显示上一个D命令显示的最后一个单元后的内容。\x0d\x0a2、修改存储单元内容的命令有两种。\x0d\x0a·输入命令E(ENTER),有两种格式如下:第一种格式可以用给定的内容表来替代指定范围的存储单元内容。命令格式为:\x0d\x0a-E address[list]\x0d\x0a例如,-E DS:100 F3'XYZ'8D\x0d\x0a其中F3,'X','Y','Z'和各占一个字节,该命令可以用这五个字节来替代存储单元DS:0100到0104的原先的内容。\x0d\x0a第二种格式则是采用逐个单元相继修改的方法。命令格式为:\x0d\x0a-E address\x0d\x0a例如,-E DS:100\x0d\x0a则可能显示为:\x0d\x0a18E4:0100 89.-\x0d\x0a如果需要把该单元的内容修改为78,则用户可以直接键入78,再按“空格”键可接着显示下一个单元的内容,如下:\x0d\x0a18E4:0100 89.78 1B.-\x0d\x0a这样,用户可以不断修改相继或稿单元的内容,直到用ENTER键结束该命令为止。\x0d\x0a·填写命令F(FILL),其格式为:梁团散\x0d\x0a-F range list\x0d\x0a例如:-F 4BA:0100 5 F3'XYZ'8D\x0d\x0a使04BA:0100~0104单元包含指定的五个字节的内容。如果list中的字节数超过指定的范围,则忽略超过的项;如果list的字节数小于指定的范围,则重复使用list填入,直到填满指定的所有单元为止。\x0d\x0a3)检查和修改寄存器内容的命令R(register),它有三种格式如下:\x0d\x0a·显示CPU内所有寄存器内容和标志位状态,其格式为:\x0d\x0a-R\x0d\x0a例如,-r\x0d\x0aAX=0000 BX=0000 CX=010A DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000\x0d\x0aDS=18E4 ES=18E4 SS=18E4 CS=18E4 IP=0100 NV UP DI PL NZ NA PO NC\x0d\x0a18E4:0100 C70604023801 MOV WORD PTR [0204],0138 DS:0204=0000\x0d\x0a·显示和修改某个寄存器内容,其格式为:\x0d\x0a-R register name\x0d\x0a例如,键入\x0d\x0a-R AX\x0d\x0a系统将响应如下:\x0d\x0aAX F1F4\x0d\x0a:\x0d\x0a即AX寄存器的当前内容为F1F4,如不修改则按ENTER键,否则,可键入欲修改的内容,如:\x0d\x0a\x0d\x0a-R bx\x0d\x0aBX 0369\x0d\x0a:059F\x0d\x0a则把BX寄存器的内容修改为059F。\x0d\x0a·显示和修改标志位状态,命令格式为:\x0d\x0a-RF系统将响应,如:\x0d\x0aOV DN EI NG ZR AC PE CY-\x0d\x0a此时,如不修改其内容可按ENTER键,否则,可键入欲修改的内容,如:\x0d\x0aOV DN EI NG ZR AC PE CY-PONZDINV\x0d\x0a即可,可见键入的顺序可以是任意的。\x0d\x0a4)运行命令G,其格式为:\x0d\x0a-G[=address1][address2[address3?]]\x0d\x0a其中,地址1指定了运行的起始地址,如不指定则从当前的CS:IP开始运行。后面的地址均为断点地址,当指令执行到断点时,就停止执行并显示当前所有寄存器及标志位的内容,和下一条将要执行的指令。\x0d\x0a5)跟踪命令T(Trace),有两种格式:\x0d\x0a·逐条指令跟踪\x0d\x0a-T [=address]\x0d\x0a从指定地址起执行一条指令后停下来,显示所有寄存器内容及标志位的值。如未指定地址则从当前的CS:IP开始执行。\x0d\x0a·多条指令跟踪\x0d\x0a-T [=address][value]\x0d\x0a从指定地址起执行n条指令后停下来,n由value指定。\x0d\x0a6)汇编命令A(Assemble),其格式为:\x0d\x0a-A[address]\x0d\x0a该命令允许键入汇编语言语句,并能把它们汇编成机器代码,相继地存放在从指定地址开始的存储区中。必须注意:DEBUG把键入的数字均看成十六进制数,所以如要键入十进制数,则其后应加以说明,如100D。\x0d\x0a7)反汇编命令U(Unassemble)有两种格式。\x0d\x0a·从指定地址开始,反汇编32个字节,其格式为:\x0d\x0a-U[address]\x0d\x0a例如:\x0d\x0a-u100\x0d\x0a18E4:0100 C70604023801 MOV WORD PTR[0204],0138\x0d\x0a18E4:0106 C70606020002 MOV WORD PTR[0206],0200\x0d\x0a18E4:010C C70606020202 MOV WORD PTR[0208],0202\x0d\x0a18E4:0112 BBO4O2 MOV BX,0204\x0d\x0a18E4:0115 E80200 CALL 011A\x0d\x0a18E4:0118 CD20 INT 20\x0d\x0a18E4:011A 50PUSH AX\x0d\x0a18E4:011B 51PUSH CX\x0d\x0a18E4:011C 56PUSH SI\x0d\x0a18E4:011D 57PUSH DI\x0d\x0a18E4:011E 8B37 MOV SI,[BX]\x0d\x0a如果地址被省略,则从上一个U命令的最后一条指令的下一个单元开始显示32个字节。\x0d\x0a·对指定范围内的存储单元进行反汇编,格式为:\x0d\x0a-U[range]\x0d\x0a例如:\x0d\x0a-u100 10c\x0d\x0a18E4:0100 C70604023801 MOV WORD PTR[0204],0138\x0d\x0a18E4:0106 C70606020002 MOV WORD PTR[0206],0200\x0d\x0a18E4:010C C70606020202 MOV WORD PTR[0208],0202\x0d\x0a或\x0d\x0a-u100 112\x0d\x0a18E4:0100 C70604023801 MOV WORD PTR[0204],0138\x0d\x0a18E4:0106 C70606020002 MOV WORD PTR[0206],0200\x0d\x0a18E4:010C C70606020202 MOV WORD PTR[0208],0202\x0d\x0a\x0d\x0a可见这两种格式是等效的。\x0d\x0a8)命名命令N(Name),其格式为:\x0d\x0a-N filespecs [filespecs]\x0d\x0a命令把两个文件标识符格式化在CS:5CH和CS:6CH的两个文件控制块中,以便在其后用L或W命令把文件装入存盘。filespecs的格式可以是:\x0d\x0a[d:][path] filename[.ext]\x0d\x0a例如,\x0d\x0a-N myprog\x0d\x0a-L\x0d\x0a-\x0d\x0a可把文件myprog装入存储器。\x0d\x0a9)装入命令(Load),有两种功能。\x0d\x0a·把磁盘上指定扇区范围的内容装入到存储器从指定地址开始的区域中。其格式为:\x0d\x0a-L[address[drive sector sector]\x0d\x0a·装入指定文件,其格式为:\x0d\x0a-L[address]\x0d\x0a此命令装入已在CS:5CH中格式化了文件控制块所指定的文件。如未指定地址,则装入CS:0100开始的存储区中。\x0d\x0a10)写命令W(Write),有两种功能。\x0d\x0a·把数据写入磁盘的指定扇区。其格式为:\x0d\x0a-W address drive sector sector\x0d\x0a·把数据写入指定的文件中。其格式为:\x0d\x0a-W[address]\x0d\x0a此命令把指定的存储区中的数据写入由CS:5CH处的文件控制块所指定的文件中。如未指定地址则数据从CS:0100开始。要写入文件的字节数应先放入BX和CX中。\x0d\x0a11)退出DEBUG命令Q(Quit),其格式为:\x0d\x0a-Q\x0d\x0a它退出DEBUG,返回DOS。本命令并无存盘功能,如需存盘应先使用W命令。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12353515.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存