精华内容
下载资源
问答
  • Debug调试工具

    2018-11-09 10:55:56
    Debug调试工具:添加断点(eclipse) 然后点击一下按钮进行调试(二选一) 1)掌握4个键: 1.1)F5:单步调试(会进入到方法中) 1.2)F6:逐过程调试(不会进入到方法中) 1.3)F7:结束方法的调试 ...

    当程序运行结果与你所预期结果不同时

    1. 打桩:System.out.println(数据);
    2. Debug调试工具:添加断点(eclipse)
      双击蓝色区域在想要的代码行设置断点,添加断点后代码运行暂停于此
      双击该蓝色区域在你想要的代码行设置断点,添加断点后代码运行暂时停止与此
      然后点击一下按钮进行调试(二选一)!
      右击
      在这里插入图片描述
      或者点击快捷按钮
      在这里插入图片描述

    调试

    先随便写一个类用来测试

    public class DebugTest {
    
    	public static void main(String[] args) {
    		int m=8;//在此处添加的断点
    		test();
    		int n=6;
    		sum(m,n);
    
    	}
    	public static void sum(int a,int b){
    		
    		int c=a+b;
    		if(c>5){
    			System.out.println("333");
    		}
    	}
    	public static void test(){
    		System.out.println("111");
    		System.out.println(5);
    		System.out.println("222");
    	}
    }
    

    1)掌握4个键:
    1.1)F5:单步调试(会进入到方法中)
    单击跳到下一行 (test()方发处) 在这里插入图片描述
    再单击即进入test()方法中执行该方法所要操作的语句
    在这里插入图片描述
    依次类推,再次点击便会进入到println()方法
    在这里插入图片描述

    1.2)F6:逐过程调试(不会进入到方法中)
    如果想要跳过进入方法,可用F6键,如上述过程,println()是java内部封装的方法,我们无需测试,直接跳过即可。
    在这里插入图片描述
    此时直接跳过进入println()方法,跳到下一条要执行的语句,如果此时语句无错,即会在控制台输出执行结果

    如果出错,会停在该语句,继续执行会报出异常 ,调试会被停止
    在这里插入图片描述
    1.3)F7:结束方法的调试
    在这里插入图片描述
    结束当前的test方法,并将方法中的剩余语句执行。如果有错,就会跳到那一句有错的语句
    1.4)F8:直接跳到下一个断点(若后面没有断点则结束调试)
    在这里插入图片描述
    如果无错同样会将中间的语句执行成功,如果有错,就会跳到那一句有错的语句

    2)会看两个东西:
    2.1)变量
    看这个窗口在这里插入图片描述
    执行一句声明变量语句就会显示出一个变量
    在这里插入图片描述

    进入sum()方法后会再开辟一块栈帧显示方法中的变量
    在这里插入图片描述

    2.2)会添加监视(选中表达式右键watch)
    监视一般都是表达式 在这里插入图片描述
    选中c>5表达式鼠标右键选中Watch,会弹出一个界面
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • Httpdebug调试工具

    2017-10-27 10:35:51
    一款小的HTTP调试工具。HttpDebug HTTP协议调试工具 可以自定义Cookie、Post数据甚至是整个HTTP请求头,用作开发WEB、WEB应用软件的调试很不错
  • 实验一 利用DEBUG调试工具调试程序 内容为实验具体步骤
  • 13.3debug调试工具

    2020-03-24 18:12:29
    Debug是一个供程序员进行代码调试工具,它可以跟踪每行代码的执行变化以验证程序执行的正确性,Eclipse中也支持有debug工具,开发者只需要设置好相应的断点并以调试模式运行程序即可启动此工具。 范例:定义一个...

    Debug

    Debug是一个供程序员进行代码调试的工具,它可以跟踪每行代码的执行变化以验证程序执行的正确性,Eclipse中也支持有debug工具,开发者只需要设置好相应的断点并以调试模式运行程序即可启动此工具。
    范例:定义一个用于调试的程序代码

    
    public class Math {
    	private Math() {}// 构造方法私有化
    	public static int add(int x,int y) {// 加法操作
    		int result = 0 ;// 为方便观察,定义此变量
    		result = x + y ;// 加法计算
    		return result ;// 返回计算结果
    	}
    
    }
    
    

    范例:编写Math类调用类

    public class MathJava {
           public static void main(String[] args) {
    		int numA=10;
    		int numB=20;
    		System.out.println(Math.add(numA, numB));    //	【断点】加法计算
    		
    		}
    }
    
    

    在这里插入图片描述
    在类上右击选Debug–>1 Java Application.
    选中Remeber my decision 点击Switch。
    进入调试视图
    在这里插入图片描述

    debug操作

    • 单步进入(Step Into):指的是进入到执行的方法之中观察方法的执行效果,快捷键:【F5】;
    • 单步跳过(Step Over):在当前代码的表面上执行,快捷键:【F6】;
    • 单步返回(Step Return):不再观察了,而返回到进入处,快捷键:【F7】;
    • 恢复执行(Resume):停止调试,而直接正常执行完毕,快捷键:【F8】。
    展开全文
  • 上机实验02 Debug调试工具的使用 一、实验要求和目的 熟练掌握动态调试程序DEBUG的使用;   二、软硬件环境 1、硬件环境:微机CPU 486以上,500MB以上硬盘,32M以上内存; 2、软件环境:装有MASM 5.0、Debug...

    上机实验02 Debug调试工具的使用

    一、实验要求和目的

    熟练掌握动态调试程序DEBUG的使用;

     

    二、软硬件环境

    1、硬件环境:微机CPU 486以上,500MB以上硬盘,32M以上内存;

    2、软件环境:装有MASM 5.0、Debug、LINK、EDIT、CREF.EXE和EXR2BIN.EXE等应用程序。

     

    三、实验涉及的主要知识单元

     

    通过编辑、汇编和连接后的程序是可以执行的程序。但是,一个程序特别是比较复杂的程序不能保证没有一点错误。因此,在投入正式运行前必须进行调试,以检查程序的正确性。调试程序Debug就是用来调试汇编语言程序的一种工具。Debug的主要功能有显示和修改寄存器及内存单元的内容;按指定地址启动并运行程序;设置断点使程序分段运行,以便检查程序运行过程中的中间结果或确定程序出错的位置;反汇编被调试程序,它将一个可执行文件中的指令机器码反汇编成助记符指令并同时给出指令所在的内存地址;单条追踪或多条追踪被调试程序,它可以逐条指令执行或几条指令执行被调试程序,每执行一条(或几条)指令后,Debug程序将中断程序的运行并提供有关结果信息;汇编一段程序,在Debug的汇编命令下可以直接输入助记符指令,并将其汇编成可运行程序段。此外,Debug还可以将磁盘指定区的内容或一个文件装入到内存或将内存的信息写到磁盘上等等。

    启动Debug程序:DOS状态下可以用下面的命令启动Debug程序:

    DEBUG [路径文件名.扩展名]

    Debug后面的文件名及路径是指被调试程序的文件名及路径,Debug后面的文件必须是程序的可执行文件,其扩展名可以是.EXE .COM。在此命令后,DOS将调试程序Debug调入内存,Debug接着将被调程序送入内存。比如:DEBUG 123.EXE 

     

    调试程序Debug的主要命令如下:

     

    (一)显示内存单元内容的命令D

    格式(1)-D 地址

    从指定地址开始显示128个字节的内容,每一行的左边显示段内偏移地址,接着显示16个单元的内容,最右边区域则显示这一行的16个单元所对应的可显示的字符。若无可显示的字符则用圆点(小数点)填充。 

    D命令中的地址可为段内偏移量也可为段基址和段内偏移量两部分,中间用冒号隔开16800110即指段基址为1680H,段内偏移量为0110HDebug中所显示的数据均为十六进制数且省去了后面的H标志。 

    格式(2)-D 范围

    将显示指定地址范围内的内存单元的内容起始地址可由段基址及段内偏移量两个部分组成中间用冒号“:”隔开也可以只指出段内偏移量而此时的段基址在DS中。这里所说的范围包含起始地址和结束地址。

    比如 D DS:1000  1020

    将显示数据段偏移地址为1000H到1020H的内容。  

     

    (二)修改内存单元内容的命令E

    格式(1):-E 地址 内容表

    它的功能是用给定的内容表去代替所指定的内存单元的内容。 

    例如

    E  DS0110   41  CLOSE  41

    该命令执行后将用列表中的7个字符填入从DS0110 DS0116 的7个存储单元中。

    格式(2)E 地址

    它的功能是可以连续地逐个修改内存单元的内容。当屏幕上显示指定单元的地址和内容之后可采取下列办法:

    ①若指定单元的内容需要修改则将新的内容的十六进制数输入再按空格键修改便告完成然后显示下一个存储单元的地址及内容若需要修改可进行同样的操作。若某一个单元的内容不需要修改而操作又要进行下去则可直接按空格键。 

    ②若需要显示前一个单元的地址和内容则输入连接号′-′,若要修改则输入新的内容;若显示前一个单元的地址和内容仍要修改则可进行同样的操作;若显示的内容不需要修改则可直接按′-′键使该操作由高地址向低地址单元连续不断地进行。

    ③按<CR>结束E命令。 

     

    (三)检查和修改寄存器内容的命令R

    格式(1)R

    此时将显示所有寄存器的内容和全部标志位的状态以及现行CSIP所指的机器指令代码和反汇编符号。 

    格式(2)R 寄存器名

    该格式可用于检查和修改指定寄存器的内容。若不修改其内容可按<CR>若需要修改其内容可以输入1-4 个十六进制数再按<CR>键。 

    格式(3)RF

    该格式可用于显示标志和修改标志位状态。 

    当系统给出标志位状态后可采取下列办法:

    ①若不需要修改任一标志位可按<CR>键。 

    ②若需要修改一个或多个标志位可输入其相反的值各标志位之间可以无空格且与顺序无关修改后按<CR>键。 

    由于标志位状态显示时是用下列特殊符号表示的因而修改时只要输入规定的符号即可。下面是标志名和状态符号的对照表:

        标志名置                  位符号复              位符号

    溢出标志OF(/)                OV                  NV

    方向标志DF(/)                DN                  UP

    中断标志IF(允许/禁止)             EI                   DI

    符号标志SF(/)                 NG                  PL

    零标志ZF(/)                   ZR                  NZ

    辅助进位标志AF(/)            AC                   NA

    奇偶校验标志PF(/)             PE                  PO

    进位标志CF(/)                CY                   NC

    只有追踪标志TF,不能用指令直接修改。 

    例如:输入RF命令系统可能作出如下响应

    OV DN EI NG ZR AC PE CY-

    若现在要修改奇偶、零、中断和溢出标志位可在光标处输入:

    PO NZ DI NV<CR>

     

    (四)运行程序命令G

    格式:G =地址][地址[地址]]

    该命令可以在程序运行中设置断点。它是Debug程序进行程序调试的主要命令之一。

    示例:-g 001a 则执行从当前cs:ip至001a的指令,注意:地址设置必须从指令的第一字节设起。

    ①第一个参数“=地址”规定了程序执行的起始地址CS内容作段地址等号后面的地址只需给出地址偏移量。此时命令G与地址之间的等号不能省去。 

    如果在G命令执行前已经设置了CS值和IP则也可以直接用G命令从指定地址执行程序。 

    ②格式中后面给出的地址是指断点地址最多可设置10个断点。当程序执行到一个断点时,就停下来,显示CPU各寄存器的内容和标志位的状态以及下一条待执行的指令被调试程序的所有断点全部被取消并返回Debug 

    ③地址参数所指的单元必须包含有有效的8088指令的第一个字节否则将产生不可预料的结果。 

    ④堆栈必须至少包含有6个可用字节否则也将产生不可预料的结果。 

    ⑤若断点地址只包括地址偏移量则认为段地址在CS寄存器中。 

     

    (五)追踪命令T

    格式(1)T =地址]

    该命令可以在指令执行中进行追踪若略去地址则从CSIP现行值执行。每一次T命令都执行一条指令。 

    格式(2)T =地址][值]

    此时,它可对多条指令进行追踪即在执行了由值所指定的若干条指令之后停止执行并显示各寄存器的内容和各标志位还指出下一条待执行的指令。 

     

    (六)汇编命令A

    若在调试目标程序的过程中要求改写或增添一段目标程序则可以用A命令直接在Debug下实现。 

    格式:A [地址]

    该命令可以从指定地址开始将输入的汇编语言语句立即汇编成机器代码连续存放在内存单元中。在程序输入完毕后最后一行不输入内容直接按回车键即可返回DEBUG程序还可用反汇编命令U对刚输入的内容进行反汇编以验证输入的程序是否正确。 

    使用A命令应遵守以下规则:

     所有输入数值均为十六进制数。 

     前缀助记符必须在相关指令的前面输入可以在同一行也可以在不同行输入。 

     段超越助记符为CS: DS: ES: SS: 

     远调用时的返回指令助记符用RETF

     使用串操作指令时助记符中必须注明是字节还是字传送。 

     汇编语言能自动汇编短、近和远的转移及近和远的调用,也能由NEARFAR前缀来超越。 

    例如:

        0110:0600 JMP 602;短转移

        0110:0602 JMP NEAR 605;近转移

        0110:0605 JMP FAR 60A;远转移

        第一条JMP指令中含有一个字节偏移量。 

        第二条JMP指令中含有两个字节偏移量。 

        第三条JMP指令中含有两个字节的偏移量及两个字节的段地址。 

     DEBUG不能确定某些操作数涉及的是字类型存储单元还是字节类型的存储单元时在这种情况下必须用前缀“WORD PTR或“BYTE PTR来加以说明。

    例如:

    NEG BYTE PTR 128                     

    DEC WORD SI   

     Debug不能确定一个操作数是立即数还是存储单元的地址时可以把地址放在方括号中。

     两个最常用的伪指令DBDW可以在A命令中使用用来直接把字节或字的值送入相应的存储单元。

    例如:

    DB  25,3,4,THIS IS AN EXAMPLE

    DW  6000, 2000, 7000,BA   

    Debug支持所有形式的寄存器间接寻址命令。

    例如:ADD BX,74BP+3][SI-5

    POPBX+DI

     

    (七)反汇编命令U

    格式(1)U地址

    该命令从指定的地址开始反汇编32个字节。若略去指定地址则以上一个U命令反汇编的最后一条指令地址的下一条指令地址作为起始地址;若没有用过U命令则以由Debug初始化的段寄存器的值作段地址100作为地址偏移量。 

    格式(2)U范围这种格式的命令可以对指定范围的内存单元进行反汇编范围可以由起始地址、结束地址(只能包含地址偏移量)或起始地址及长度来指定。其命令格式如:

    U 04BA:100  0108   U  04BA:0100  L7

    两者是等效的。 

     

    (八)输入命令I

    格式:I端口地址

    该命令从指定端口输入一个字节并显示。 

    例如: I  2E8

    C  C

    它表示所显示的是从02E8 端口输入的一个字节为CC。 

     

    (九)输出命令O

    格式:O端口地址 字节值

    其功能是向指定的端口输出一个字节。 

    例如:O 2E8 12

    它表示将一个字节12H送到输出端口2E8 

     

    (十)命名命令N

    格式N文件标识符[文件标识符]

    该命令用给定的两个文件标识符格式化在CS:5CCS:6C的两个文件控制块中(若在调用Debug时具有一个文件标识符则它已格式化在CS:5C的文件控制块中),文件控制块是将要介绍的装入命令L和写命令W所需要的。 

    N命令能把文件标识符和别的参数放至CS:81开始的参数保存区中。在CS:80中保存输入的字符个数寄存器AX保存前两个文件标识符中的驱动器标志。 

    例如:

    A>DEBUG<CR>

    N  TEST<CR>

    L<CR>

    N命令后L命令可将TEST调入自己的CS:100开始的存储区中。若对正在调试的程序TEST进行调试时需要用到其它的文件标识符及其它参数也可用N命令加以实现。;

    例如:                     

    A>DEBUG TEST<CR>

      N  文件1  文件2<CR>

     

    (十一)装入命令L

     

    格式1: L <地址> <驱动器号> <起始逻辑扇区> <所读扇区个数n>

        其中<地址>的缺省值为CS:100。逻辑扇区可由物理扇区号换算得到,以双面双密度盘为例:物理扇区是按0面0道1区,0面0道2区,……,0面0道9区,0面1道1区,……,0面39道9区,1面0道1区,……,1面39道9区排列。而逻辑扇区与物理扇区号的对应关系为物理扇区0面0道1扇区至9扇区,逻辑扇区号为0—8;物理扇区1面0道1扇区至9扇区,逻辑扇区号为9—11H;物理扇区0面1道1扇区至9扇区,逻辑扇区号为12—1AH;……。这样每道先0面后1面一直排下去。

        其中<驱动器号>为0、1或2,0表示A驱,1表示B驱,2表示硬盘。

    功能: 将<驱动器号>指定的盘上,从<起始逻辑扇区>起,共n个逻辑扇区上的所有字节顺序读入指定内存地址开始的一片连续单元。当L后的参数缺省时,必须在L之前由N命令指定(或进入DEBUG时一并指出)所读驱动器文件名。此时L执行后将该文件装入内存。

        例如:-N EXAMPLE <Enter>

              -L <Enter>

       将当前驱动器上的EXAMPLE文件装入CS:100起始的一片内存单元。

    格式2L地址或L

    该命令把已在CS:5C中格式化的文件控制块所指定的文件装入到指定区域中。 

    若省略地址则装入到CS:100开始的内存区域中。 

    若是带有扩展名.COM.EXE文件无论命令中是否指定了地址一律装入到CS:100开始的内存区域中去。

    通常在BXCX中包含了所读入文件的字节数但对具有扩展名.EXE文件BXCX中还包含实际程序长度。

     

    (十二)写命令W

    功能: 为L/W命令指定待装入/写盘文件

    格式1:W <地址> <盘号> <起始逻辑扇区> <所写逻辑扇区数n>

    功能:与L命令不同的地方是将内存从<地址>起始的一片单元内容写入指定扇区。只有W而没有参数时,与N命令配合使用将文件写盘。该命令把由地址所指定的内存区域中的数据写入指定的驱动器。若地址中只包含偏移量,则段地址在CS中。

    其中,扇区号决定了写入起始扇区;区段数决定了写入的区段个数;扇区号和区段数均用十六进制数表示。

    格式2W地址或W

    该命令把指定内存区域中的数据写入到由CS:5C处的文件控制块所规定的文件中去。若省略地址则内存区域从CS:100 开始。

    对于扩展名为.EXE.HEX文件不能写入。因为这些文件的写入要用一种特殊格式而此格式Debug程序不支持。 

     

    (十三)退出Debug命令Q

    格式:Q

    该命令退出Debug程序并返回DOS 

    Q命令并不把内存中的文件存盘若需要存盘的话应在退出前用W命令写入磁盘。

     

    四、实验内容与步骤

    1、实验内容

    (1) 进入和退出Debug程序

    (2) 学会Debug中的D命令、E命令、R命令、T命令、A命令、G命令、U命令、N命令、W命令等的使用。

    (3) 利用Debug,验证乘法、除法、加法、减法、带进位加、带借位减、堆栈操作指令、串操作指令的功能。

       (4)使用Debug调试程序调试汇编程序。

     

    2、实验步骤

    (1)   在DOS提示符下,进入Debug程序。

    (2)    详细记录每一步所用的命令,以及查看结果的方法和具体结果。

    (3)现有一个双字加法源程序如下,其中存在错误。现假设已汇编、连结生成了可执行文件HB.EXE,存放在d:\MASM目录下。请使用Debug对其进行调试。

    Code SEGMENT

          ASSUME CS:code,DS:code

          ORG 100H            ;从100H处开始存放下列指令

    Start:MOV AX,code         ;将DS置成code段的首地址

          MOV DS,AX

          MOV SI,200H         ;取第一个数的首地址

          MOV AX,[SI]         ;将第一个数的低16位取到AX

          MOV DI,204H         ;取第二个数的首地址

          ADD AX,[DI]         ;第一个数和第二个数的低16应相加

          MOV [SI+8],AX       ;低16位相加的结果送到208H和209H单元

          MOV AX,[SI+2]       ;取第一个数的高16位送到AX中

          ADD AX,[DI+2]       ;两个数的高16位相加

          MOV [SI+0AH],AX     ;高16位相加的结果送到20AH,20BH单元

          MOV AX,4C00H        ;使用DOS的4CH号功能调用

          INT 21H             ;进入功能调用,返回DOS

          ORG 200H            ;从200H处开始存放下列数据

          DD 12345678h,654387A9h,0h ;被加数、加数、和

    Code ENDS

        END start

    调试过程:

    ① 进入Debug并装入可执行文件HB.EXE

    D:\MASM>Debug HB.EXE<Enter>

    - 

    观察寄存器初始状态

    -R <Enter>

    AX=0000  BX=0000  CX=020C  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000

    DS=1892  ES=1892  SS=18A2  CS=18A2  IP=0100   NV UP EI PL NZ NA PO NC

    18A2:0100 B8A218        MOV     AX,18A2

    注:(1)以上显示的寄存器值,可能和你的电脑显示的不一样。

    (2)Debug中默认的进制是十六进制。

    以单步工作方式开始运行程序

        首先用T命令顺序执行用户程序的前l两条指令,将段寄存器DS预置为用户的数据段。

    -T <Enter>

    AX=18A2  BX=0000  CX=020C  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000

    DS=1892  ES=1892  SS=18A2  CS=18A2  IP=0103   NV UP EI PL NZ NA PO NC

    18A2:0103 8ED8          MOV     DS,AX

    -T <Enter>

    AX=18A2  BX=0000  CX=020C  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000

    DS=18A2  ES=1892  SS=18A2  CS=18A2  IP=0105   NV UP EI PL NZ NA PO NC

    18A2:0105 BE0002        MOV     SI,0200

     观察用户程序数据段初始内容

    -D 200 20F <Enter>

    18A2:0200  78 56 34 12 A9 87 43 65-00 00 00 00 00 74 13 50   xV4...Ce.....t.P

    - 

     连续工作方式运行程序至返回DOS前(设断点),查看运行结果。为此,现使用U命令反汇编。

     -U 100 <Enter>

     18A2:0100 B8A218        MOV     AX,18A2

     18A2:0103 8ED8          MOV     DS,AX

     18A2:0105 BE0002        MOV     SI,0200

     18A2:0108 8B04          MOV     AX,[SI]

     18A2:010A BF0402        MOV     DI,0204

     18A2:010D 0305          ADD     AX,[DI]

     18A2:010F 894408        MOV     [SI+08],AX

     18A2:0112 8B4402        MOV     AX,[SI+02]

     18A2:0115 034502        ADD     AX,[DI+02]

     18A2:0118 89440A        MOV     [SI+0A],AX

     18A2:011B B8004C        MOV     AX,4C00

     18A2:011E CD21          INT     21

     -

    可见,要执行10条指令,至011B处停止

    -G=100,011B <Enter>

     AX=7777  BX=0000  CX=020C  DX=0000  SP=0000  BP=0000  SI=0200  DI=0204

     DS=18A2  ES=1892  SS=18A2  CS=18A2  IP=011B   NV UP EI PL NZ NA PE NC

     18A2:011B B8004C        MOV     AX,4C00

     -D 200 20F <Enter>

     18A2:0200  78 56 34 12 A9 87 43 65-21 DE 77 77 43 43 83 06   xV4...Ce!.wwCC..

     - 

    和为7777DE21H,正确。

    ⑥ 再取一组数据,查看运行结果。为此,首先用E命令修改数据。

     -E 200 CD,AB,78,56,90,EF,34,12 <Enter>

     -D 200 20F <Enter>

     18A2:0200  CD AB 78 56 90 EF 34 12-21 DE 77 77 43 43 83 06   ..xV..4.!.wwCC..

     -G=100,11B <Enter>

     AX=68AC  BX=0000  CX=020C  DX=0000  SP=0000  BP=0000  SI=0200  DI=0204

     DS=18A2  ES=1892  SS=18A2  CS=18A2  IP=011B   NV UP EI PL NZ NA PE NC

     18A2:011B B8004C        MOV     AX,4C00

     -D 200 20F <Enter>

     18A2:0200  CD AB 78 56 90 EF 34 12-5D 9B AC 68 43 43 83 06   ..xV..4.]..hCC..

     -

    和为68AC9B5DH,错误。说明程序有问题。

    ⑦ 再将断点设在完成低位字加法后,查看运行结果。

    -G=100,112 <Enter>

     AX=9B5D  BX=0000  CX=020C  DX=0000  SP=0000  BP=0000  SI=0200  DI=0204

     DS=18A2  ES=1892  SS=18A2  CS=18A2  IP=0112   NV UP EI NG NZ NA PO CY

     18A2:0112 8B4402        MOV     AX,[SI+02]               DS:0202=5678

     -D 200 20F <Enter>

     18A2:0200  CD AB 78 56 90 EF 34 12-5D 9B AC 68 43 43 83 06   ..xV..4.]..hCC..

     -

    低位和为9B5D,正确。说明错误可能出在后面

    ⑧ 使用T命令从刚才的断点处向后单步调试,查看运行结果。

    -T=112 <Enter>

     AX=5678  BX=0000  CX=020C  DX=0000  SP=0000  BP=0000  SI=0200  DI=0204

     DS=18A2  ES=1892  SS=18A2  CS=18A2  IP=0115   NV UP EI NG NZ NA PO CY

     18A2:0115 034502        ADD     AX,[DI+02]             DS:0206=1234

     -T <Enter>

    AX=68AC  BX=0000  CX=020C  DX=0000  SP=0000  BP=0000  SI=0200  DI=0204

     DS=18A2  ES=1892  SS=18A2  CS=18A2  IP=0118   NV UP EI PL NZ NA PE NC

     18A2:0118 89440A        MOV     [SI+0A],AX             DS:020A=68AC

     -

    AX寄存器的结果为68AC,而应为68AD。可见是本条加法指令使用错误,这里应使用带进位加法指令。

    ⑨ 使用A命令装入正确指令后再次运行,察看结果。

    -A 115 <Enter>

     18A2:0115 ADC AX,[DI+02] <Enter>

     18A2:0118 <Enter>

     -G=100,11B <Enter>

     AX=68AD  BX=0000  CX=020C  DX=0000  SP=0000  BP=0000  SI=0200  DI=0204

     DS=18A2  ES=1892  SS=18A2  CS=18A2  IP=011B   NV UP EI PL NZ NA PO NC

     18A2:011B B8004C        MOV     AX,4C00

     -D 200 20F <Enter>

     18A2:0200  CD AB 78 56 90 EF 34 12-5D 9B AD 68 43 43 83 06   ..xV..4.]..hCC..

     -

    和为68AD9B5DH,正确。对于这样一个简单程序一般来说不会再有问题。退出后修改源程序即可。

    ⑩ 退出

    -Q <Enter>

    D:\>

    需要说明的是此程序很简单,只需使用T命令逐条单步调试即可。本例采用的调试方法似乎过于繁琐,但这是为了说明程序调试的一般方法,以便读者调试复杂程序时借鉴。

     

    五、实验要求与提示

    1、实验要求

    (1)熟练掌握Debug的命令;

    (2)熟练掌握使用Debug调试汇编程序;

    (3)回答思考问题;

    (4)记录实验结果。

    2、实验提示

    一般使用Debug调试汇编程序的步筹如下:

    (1) 调用DEBUG,装入用户程序

    (2) 观察寄存器初始状态

    (3) 以单步工作方式开始运行程序

    (4) 观察用户程序数据段初始内容

    (5) 继续以单步工作方式运行程序

    (6) 连续工作方式运行程序

    (7) 修改程序和数据

    (8) 运用断点调试程序

     

    、思考与练习以及测评标准

    (1) 如何启动和退出Debug程序。

    (2) 整理每个Debug命令使用的方法,实际示例及执行结果。

    (3) 启动Debug后,要装入某一个.EXE文件,应通过什么方法实现?

    (4) 用Debug调试程序时,如何设置断点?

    ⑸编写计算下面函数值的程序:

    设输入数据为X、输出数据Y,且皆为字节变量,使用Debug查看X、Y两个变量的数据。

    分类统计字数组data中正数、负数和零的个数,并分别存入内存字变量Positive、Negative和Zero中,数组元素个数保存在其第一个字中。使用Debug查看Positive、Negative和Zero三个变量的数据。

     

     

    七、参考程序

     

    ;CH1EX1.ASM

     

    编写计算下面函数值的程序:

    设输入数据为X、输出数据Y,且皆为字节变量程序如下:

    源程序如下:

    DATA SEGMENT

    X     DB  -10

    Y     DB  ?

    DATA ENDS

    STACK SEGMENT  STACK

        DB  200 DUP(0)

    STACK ENDS

    CODE SEGMENT

    ASSUME  DS:DATA,SS:STACK,CS:CODE

    START: MOV AX,DATA

    MOV DS,AX

        CMP X,0             ;与0进行比较

        JGE A1               ;X≥0转A1

        MOV Y,-1          ;X <0时,-1→Y

        JMP  EXIT

    A1:     JG   A2             ;X>0转A2

        MOV Y,0             ;X=0时,0→Y

        JMP  EXIT

    A2:    MOV Y,1             ;X>0,1→Y

    EXIT:  MOV AH, 4CH

        INT 21H

    CODE     ENDS

            END START

    ***********************************

     

    Debug ch1ex1.exe

     

    -u

    可以知道该程序执行的最后一条指令的地址是0B5B:0038

    键入如下两条命令,第一条命令是使程序运行到0B5B:0038结束,第二条命令是显示数据段的内容,就可以显示X、Y的值了。

    -G 0038

    -D DS:0

     

     

     

     

     

    ;CH1EX2.ASM

    ;分类统计字数组data中正数、负数和零的个数,并分别存入内存字变量Positive、Negative和Zero中,数组元素个数保存在其第一个字中。

    源程序如下:

    DATA1  SEGMENT

          Data DW 10

          DW 2130, -43, 31, -321, -1234, 345, 0, 3213, 0, 5477

          Positive  DW 0

          Negative  DW 0

          Zero  DW 0

          DATA1  ENDS

          CODE  SEGMENT

          ASSUME  CS:CODE, DS:DATA1

          START:MOV AX, DATA1

          MOV DS, AX

          Mov  AX,0          ;用AX来对正数计数

          Mov  BX,0          ;用BX来对负数计数

          Mov  DX,0          ;用DX来对零计数

          MOV  CX, data          ;用CX来进行循环计数

          JCXZ  save             ;考虑数组的元素个数为0的情况

          LEA   SI, data+2          ;用指针SI来访问整个数组

          again: CMP word ptr [SI], 0

          JL  lower

          JE  equal

          INC  AX

          JMP loop1

          lower: INC BX

          JMP  loop1

          Equal :INC DX

          loop1:ADD SI, 2

          LOOP  again

          Save :MOV Positive, AX    ;把各类的统计数保存到内存单元中

          MOV  Negative, BX

          MOV  Zero, DX

          MOV  AH, 4CH

          INT   21H

          CODE  ENDS

                 END  START

    使用Debug查看Positive、Negative和Zero三个变量的数据的方法,参照上面的方法就可以了。

     

     

    Ch1ex1=================

     

    可以知道该程序执行的最后一条指令的地址是1429:0023

    键入如下两条命令,第一条命令是使程序运行到1429:0023结束,第二条命令是显示数据段的内容,就可以显示X、Y的值了。

    -G 0023

    -D DS:0

     

     

     

     

     

     

     

     

     

     

     

     

    展开全文
  • PHP代码yii框架的调试工具;解压按照步骤调试即可
  • Debug调试工具总结

    2020-08-03 10:26:35
  • 系统崩溃后,Windows系统上出现蓝屏错误。蓝屏突然弹出,迫使您在工作中重启系统。...幸运的是,有许多方便的工具,如Windows调试工具(Windbg),它允许您读取错误报告以进行故障排除并解决BSOD错误。
  • Mysql debug调试工具

    2019-01-08 09:57:53
    不要用debuggerformysql, 这款软件非常垃圾,而且很容易卡死。 推荐: dbforge studio 保底手段: 新建临时表,在待调试的Function或者Produce中穿插着插入日志信息至临时表中。...
  • xeus-python是2020年新出的Jupyter notebook调试工具,参考机器之心的文章首款 Jupyter 官方可视化 Debug 工具,JupyterLab 未来可默认支持 Debug 安装过程 安装JupyterLab 前端插件 jupyter labextension install @...
  • Debug调试工具的使用

    千次阅读 2018-09-04 17:18:28
    熟练掌握动态调试程序DEBUG的使用;   二、软硬件环境 1、硬件环境:微机CPU 486以上,500MB以上硬盘,32M以上内存; 2、软件环境:装有MASM 5.0、Debug、LINK、EDIT、CREF.EXE和EXR2BIN.EXE等应用程序。   ...
  • 调试代码的时候,你的项目得debug模式启动,也就是点那个绿色的甲虫启动服务器,然后,就可以在代码里面断点调试啦。每次要重新进入断点调试之前,都应该将程序执行完成或者结束掉,然后再进行断点调试
  • 安装php xdebug调试工具及性能分析工具webgrind for windows第一步:查看php版本等信息phpinfo(); 上面是 x86 NTS VC14第二步: 下载xdebug 第三步:下载扩展, 放入php的/ext扩展目录 第四步: php.ini 开启扩展 配置...
  • 启动debug模式,方便随时调试代码2. 设置debug窗口3. 设置断点4. 调试按钮&服务按钮1. 调试按钮2. 服务按钮5. 变量查询1. 在需要查看的变量上,鼠标悬停 2s 左右2. Alter + 鼠标左键3. 在 Variables 中查看4. ...
  • DEBUG调试工具一、 Debug 调试工具1. Debug的作用2. Debug的使用步骤3. IDEA中Debug按钮详解总结 参考博文:https://blog.csdn.net/qq_27093465/article/details/77449117 # 学习总结 一、 Debug 调试工具 1. Debug...
  • PyCharm debug 调试工具窗口

    千次阅读 2019-04-05 10:56:02
  • debug调试工具的使用

    千次阅读 2018-05-10 11:42:50
    调试程序的所有断点全部被取消 , 并返回 D ebug 。   ③地址参数所指的单元 , 必须包含有有效的 8088 指令的第一个字节 , 否则将产生不可预料的结果。   ④堆栈必须至少包含有 6 个可用字节 , 否则也将产生...
  •   当我们在采用WebStorm编写前端页面的时候总会遇到需要调试的地方,不论是跟随debug详细查看源码中每一步的跳转,还是修复研发中所存在的bug问题,因此配置一个完善的debug环境对于研发效率是有很大的提升的....
  • 一、编写工具的初衷 作为一名开发,和后台做接口联调的时候,多多少少会遇到...一款可视化的Debug调试工具,何不尝试一下?既方便了Android开发,也方便了后台,测试等相关人员,好处良多(PS:终于不再打扰我写B...
  • MySQL 存储过程 debug 调试工具

    千次阅读 2018-09-11 09:09:02
    下载破解版:https://download.csdn.net/download/ccl676501078/10657687
  •  使用Jmeter开发脚本时,难免需要调试,这时可以使用Jmeter的Debug Sampler,它有三个选项:JMeter properties,JMeter variables,System properties: 1、JMeter properties和System properties:通常都选false...
  • 清空在runtime目录下的debug目录下的文件即可。 转载于:https://www.cnblogs.com/pengyunjing/p/8645348.html

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,753
精华内容 3,101
关键字:

debug调试工具