[vip专享]DEBUG的使用方法
DEBUG的使用方法
DEBUG程序的使用一、在DOS的提示符下,可如下键入Debug启动调试程序:DEBUG [路径\文件名] [参数1] [参数2]Debug后可以不带文件名,仅运行Debug程序;需要时,再用N和L命令调入被调试程序。
命令中可以带有被调试程序的文件名,则运行Debug的同时,还将指定的程序调入主存;参数1/2是被调试程序所需要的参数。
在Debug程序调入后,根据有无被调试程序及其类型相应设置寄存器组的内容,发出Debug的提示符“-”,此时就可用Debug命令来调试程序。
运行Debug程序时,如果不带被调试程序,则所有段寄存器值相等,都指向当前可用的主存段;除SP之外的通用寄存器都设置为0,而SP指示当前堆栈顶在这个段的尾部;IP=0100h;状态标志都是清0状态。
运行Debug程序时,如果带入的被调试程序扩展名不是.EXE,则BX.CX 包含被调试文件大小的字节数(BX为高16位),其他同不带被调试程序的情况。
运行Debug程序时,如果带入的被调试程序扩展名是.EXE,则需要重新定位。
此时,CS : IP和SS : SP根据被调试程序确定,分别指向代码段和堆栈段。
DS=ES指向当前可用的主存段,BX.CX包含被调试文件大小的字节数(BX为高16位),其他通用寄存器为0,状态标志都是清0状态。
二、DEBUG命令的格式Debug的命令都是一个字母,后跟一个或多个参数:字母[参数]命令的使用中注意:①字母不分大小写;②只使用16进制数,没有后缀字母;③分隔符(空格或逗号)只在两个数值之间是必须的,命令和参数间可无分隔符;④每个命令只有按了回车键后才有效,可以用Ctrl+Break中止命令的执行;⑤命令如果不符合Debug的规则,则将以“error”提示,并用“^”指示错误位置。
许多命令的参数是主存逻辑地址,形式是“段基地址: 偏移地址”。
其中,段基地址可以是段寄存器或数值;偏移地址是数值。
如果不输入段地址,则采用默认值,可以是缺省段寄存器值。
DEBUG的使用及调试方法
DEBUG的使用及调试方法1、实验目的和要求:掌握DEBUG下的主要命令如:U、T、D、E、R、A、G、Q命令等。
掌握调试方法,理解CS:IP的作用,要求能在DEBUG下编写简单程序。
2. DEBUG的功能DEBUG是专门为汇编语言设计的调试工具,它通过单步、设置断点等方式,为使用者提供了非常有效的调试手段。
在DEBUG下所有输入的数据都是十六进制,所以不需要后面加H。
并且不区分大、小写字母。
3. DEBUG的调用在DOS下有两种方式调用DEBUG:(1)把执行(调试)文件装入存储器中,格式为:C>DEBUG 文件名.EXE(2)先调用DEBUG,然后用N、L命令把执行(调试)文件装入存储器。
格式为:C>DEBUG-N 文件名.EXE-L4. DEBUG的主要命令(1) U(反汇编):将机器指令进行反汇编,默认的寄存器是CS:IP,从指定地址开始反汇编32个字节,它的格式是:-U[ START-ADDR]-U[ START—ADDR END—ADDR]-U 100 ;汇编开始于CS:100-U 100 150 ;反汇编从100H 到150H的内容。
⑵T(跟踪):以单步方式执行程序。
-T ;执行一条指令。
-T 10 ;执行下面10H(16)条指令。
-T=3 2 ;从指定IP=0003开始,执行下面2条指令.(3)A (把符号指令汇编成机器码):-A 100 ;从指定地址100H开始汇编,结果写入内存。
-A ;不指定地址,则从上次A命令开始汇编。
在A命令下不能使用字段名,A命令只识别指令和DB、DW的伪指令。
⑷G (运行可执行程序):-G 200 ;从程序当前地址执行到200H结束-G ;从程序当前位置执行到程序结束-G =200 260 ;从指定(200H)或当前地址开始执行,遇到断点(260H)停止,显示寄存器和标志寄存器的内容。
⑸E(检查修改内存单元内容):默认寄存器是DS,格式是:-E[ ADDRESS] [表]-E 105 13 3A 21 ;从DS:105H开始输入3个字节的内容-E CS:211 21 2A ;从CS:211H开始输入2个字节的内容-E 110 ‘anything’;输入从DS:110H开始的字符串-E 12C ;检查修改DS:12C的内容该操作等待从键盘的输入一个或多个十六进制值的字节,字节之间用空格隔开。
DEBUG使用方法简介
2.3 DEBUG使用方法简介:DEBUG是DOS命令,必须在DOS环境下运行。
由于目前都使用WINDOWS操作系统,应设法进入实地址模式的DOS环境,才能可靠地运行DEBUG。
一般可用DOS启动盘启动系统,或在WINDOWS-98系统退出时选择“切换到MSDOS”操作,进入到实地址模式的DOS环境。
由于DEBUG是DOS外部命令,因此,须把DEBUG.EXE文件拷贝到当前目录下来运行DEBUG,DOS启动盘中应事先拷贝有DEBUG.EXE文件,在WINDOWS98系统中,“C:\WINDOWS\COMMAND\”目录下有DEBUG.EXE文件。
后面的操作,假设DEBUG.EXE文件都已事先拷贝到当前目录下。
在WINDOWS操作系统中(包括WINDOWS98、2K、XP等),系统提供了V86模式的“命令提示符”窗口,在此窗口中也能运行DEBUG,但DEBUG的某些功能会受到WINDOWS系统的限制。
1.启动与退出DEBUG:启动DEBUG,在DOS提示符下输入:DEBUG[回车]屏幕显示“-”,表示已启动了DEBUG。
“-”是DEBUG子命令等待状态,后面所有的DEBUG操作(包括运行调试自编的汇编语言程序)都是在此“-”提示符下所进行的DEBUG 子命令执行。
退出DEBUG,在“-”提示符下输入:Q[回车]屏幕显示DOS命令提示符:C:\> 或A:\> 。
2.进入与退出输入汇编指令:在“-”提示符下输入:A [偏移地址] [回车]屏幕显示“<段地址>:<偏移地址> |”,此处将等待你输入汇编语言程序或实验指令。
当一条指令输入完毕[回车]后,又将自动出现下一对“<段地址>:<偏移地址> |”等待你输入下条指令,如此重复,将帮助你把整段汇编语言程序输入完毕。
注意:如果输入汇编指令时手误,屏幕上将当场提示错误“ERROE”,自动地址不进步,还在原地址上等待你重新输入正确的汇编指令。
debug 的使用
Debug是一种程序调试工具,主要用于帮助程序员检查和修复程序中的错误。
以下是如何使用Debug的基本步骤:
设置断点:断点是一种标记,告诉Debug从标记的地方开始查看。
在要设置断点的代码行上单击鼠标左键即可。
运行程序:在代码区域右击,选择Debug执行。
单步执行:点击Step Into(F7)这个箭头,或者直接按F7,以一行一行地操纵代码,从而判断程序的执行流程是否与预期一致。
查看变量值:在执行过程中,可以查看变量的当前值,以了解程序状态。
删除或禁用断点:选择要删除的断点,单击鼠标左键即可。
如果是多个断点,可以每一个再点击一次。
也可以一次性全部删除。
以上是使用Debug的基本步骤,但请注意,具体使用方式可能会根据Debug的具体版本和配置有所不同。
DEBUG的使用方法
DEBUG程序的使用一、在DOS的提示符下,可如下键入Debug启动调试程序:DEBUG [路径\文件名] [参数1] [参数2]Debug后可以不带文件名,仅运行Debug程序;需要时,再用N和L命令调入被调试程序。
命令中可以带有被调试程序的文件名,则运行Debug的同时,还将指定的程序调入主存;参数1/2是被调试程序所需要的参数。
在Debug程序调入后,根据有无被调试程序及其类型相应设置寄存器组的内容,发出Debug的提示符“-”,此时就可用Debug命令来调试程序。
•运行Debug程序时,如果不带被调试程序,则所有段寄存器值相等,都指向当前可用的主存段;除SP之外的通用寄存器都设置为0,而SP指示当前堆栈顶在这个段的尾部;IP=0100h;状态标志都是清0状态。
•运行Debug程序时,如果带入的被调试程序扩展名不是.EXE,则BX.CX包含被调试文件大小的字节数(BX为高16位),其他同不带被调试程序的情况。
•运行Debug程序时,如果带入的被调试程序扩展名是.EXE,则需要重新定位。
此时,CS : IP和SS : SP根据被调试程序确定,分别指向代码段和堆栈段。
DS=ES指向当前可用的主存段,BX.CX包含被调试文件大小的字节数(BX为高16位),其他通用寄存器为0,状态标志都是清0状态。
二、DEBUG命令的格式Debug的命令都是一个字母,后跟一个或多个参数:字母 [参数]命令的使用中注意:①字母不分大小写;②只使用16进制数,没有后缀字母;③分隔符(空格或逗号)只在两个数值之间是必须的,命令和参数间可无分隔符;④每个命令只有按了回车键后才有效,可以用Ctrl+Break中止命令的执行;⑤命令如果不符合Debug的规则,则将以“error”提示,并用“^”指示错误位置。
许多命令的参数是主存逻辑地址,形式是“段基地址 : 偏移地址”。
其中,段基地址可以是段寄存器或数值;偏移地址是数值。
如果不输入段地址,则采用默认值,可以是缺省段寄存器值。
DEBUG的使用方法
DEBUG的使用方法1.设置断点:断点是在代码中设置的一个位置,程序在运行到这个位置时会暂停执行。
可以在关键的代码行上设置断点,以便在程序运行到这些位置时进行观察和调试。
在DEBUG工具中,我们可以在代码行上单击左侧的空白区域来设置断点。
2.执行步进:步进是一种按步执行程序的方法,可以逐行或逐过程执行代码。
通过逐行执行代码,可以观察每一行代码的执行情况,以便找出程序中的错误。
可以使用DEBUG工具提供的步进功能,一次执行一行代码或一个过程。
3.观察变量:在程序运行过程中,可以观察和监视变量的值,以便了解程序的状态。
可以使用DEBUG工具来查看变量的值,并在程序执行过程中跟踪变量的变化。
这对于发现变量值的改变和问题的根源非常有帮助。
4.输出调试信息:在调试过程中,可以通过在代码中插入输出语句来输出调试信息。
可以使用DEBUG工具提供的输出窗口或控制台来查看这些调试信息。
输出调试信息有助于了解程序的执行流程,找到错误发生的原因。
5.检查堆栈:堆栈是保存程序执行状态的一种数据结构,可以在DEBUG工具中查看和跟踪堆栈的状态。
堆栈信息可以告诉我们程序的执行路径,以及代码是如何调用和返回的。
通过检查堆栈,我们可以找到错误发生的上下文和调用链。
6.使用断言:断言是一种在代码中插入的条件,用于检查程序执行过程中的假设和要求。
可以使用DEBUG工具中的断言功能,在关键的代码位置插入断言条件。
当断言条件不满足时,程序会执行中断操作,从而帮助我们快速定位错误。
7.进行追踪:追踪是一种记录程序执行过程的方法,可以在DEBUG工具中查看程序的执行轨迹。
追踪记录了程序的每一步操作,包括函数调用、条件语句的执行和变量的修改等。
通过追踪,我们可以逐步了解程序的执行情况,并找到错误所在。
8.使用条件断点:条件断点是一种在特定条件下触发断点的方法。
可以在DEBUG工具中设置条件断点,当满足特定条件时,程序会在断点处暂停执行。
条件断点可以帮助我们找出特定情况下的错误,提高调试的效率。
Debug使用说明
附录DEBUG调试程序的应用1.直接启动DEBUG程序如在C盘的根目录下,启动的方法是:C:\>DEBUG_这时屏幕上会出现“_”提示符,等待键入DEBUG命令。
2.启动DEBUG程序的同时装入被调试文件命令格式如下:C:\>DEBUG [d:][PA TH]filename[.EXT][d:][PATH]是被调试文件所在盘及其路径,filename是被调试文件的文件名,[.EXT]是被调试文件的扩展名。
例如:BCDSUM.EXE可执行文件在A盘,用DEBUG对其进行调试的操作命令如下。
C:\>DEBUG A:\BCDSUN.EXE↙DOS在调用DEBUG程序后,再由DEBUG把被调试文件装入内存,当被调试文件的扩展名为COM时,装入偏移量为100H的位置,当扩展名为EXE时,装入偏移量为0的位置,并建立程序段前缀PSP,为CPU寄存器设置初始值。
3.退出DEBUG在DEBUG命令提示符“_”下键入Q命令,即可结束DEBUG的运行,返回DOS操作系统。
4.在DEBUG环境下建立和汇编程序在DEBUG环境下用户可以直接建立汇编语言源程序,并可以进行编辑修改,还可以进行汇编。
比如,在DEBUG下运行如下程序:MOV DL,33H ;字符3的ASCII码送DLMOV AH,2 ;使用DOS的2号功能调用INT 21H ;进入功能调用,输出‘3’INT 20H ;BIOS中断服务,程序正常结束。
该程序运行结果是在显示器上输出一个字符‘3’。
如果要输出其它字符,请改变程序中‘33H’为相应字符的ASCII码。
其中涉及DOS和BIOS功能调用。
因为我们是在DOS的支持下运行汇编语言程序,所以一般情况下,不能轻易使用输入/输出指令直接通过端口输入/输出,而必须使用DOS内部提供的子程序完成输入/输出。
DOS功能调用就是为诸如此类的目的设置的。
DOS功能调用要求在进入INT 21H调用前,首先将功能调用号送AH寄存器,并根据功能调用号准备初始数据。
debug的基本使用
debug的基本使用
Debug是一种在软件开发过程中用于调试程序的工具。
它可以帮助开发人员找到程序中的错误并进行修复,从而提高程序的质量和稳定性。
下面将介绍Debug的基本使用方法。
1. 设置断点
断点是Debug中最常用的功能之一。
它可以让开发人员在程序执行到指定位置时暂停程序,以便进行调试。
设置断点非常简单,只需要在
代码行号左侧单击鼠标即可。
2. 运行程序
设置好断点后,就可以运行程序了。
在运行过程中,程序会执行到第
一个断点处停止。
此时可以查看变量值、函数调用栈等信息来分析问题。
3. 单步执行
单步执行是指逐条执行代码,并查看每个语句的效果。
这个功能非常
有用,因为它能够帮助开发人员深入了解代码的执行过程,并找出可
能存在的错误。
4. 监视变量
监视变量可以让开发人员实时查看变量值的变化情况。
当某个变量值发生改变时,Debug会自动提示开发人员,并显示新值和旧值之间的差异。
5. 调试崩溃
当程序崩溃或出现异常时,Debug可以帮助开发人员快速定位问题。
在这种情况下,开发人员可以使用Debug来查看程序的状态、变量值等信息,并找出导致程序崩溃的原因。
总之,Debug是一种非常有用的工具,它可以帮助开发人员快速定位问题并进行修复。
掌握Debug的基本使用方法对于提高软件质量和稳定性非常重要。
DEBUG的使用及调试方法
DEBUG的使用及调试方法在软件开发过程中,调试是非常重要的一环。
调试是指通过排除软件中的错误或故障,确定程序的正确性和可靠性的过程。
在调试过程中,开发者需要使用各种工具和技术来定位和解决问题,其中DEBUG是一种常用的调试工具。
1.打印调试信息:在代码中添加打印语句,将关键信息输出到控制台或日志文件中。
这个方法简单直接,可以帮助开发者快速定位问题。
然而,过多的打印语句会对程序的性能造成影响,并且需要手动添加和移除。
2.使用断点:断点是调试器提供的一种功能,可以在代码中设置一个断点,当程序执行到断点时,会暂停执行。
开发者可以在断点处检查变量的值,观察程序的执行流程。
调试器还提供了单步执行、继续执行等功能,可以逐行调试程序。
使用断点可以直观地观察程序的执行过程,快速找到错误。
3.日志记录:使用日志记录可以在代码中记录程序的执行过程和状态,以便后续分析。
使用日志记录可以避免过多的打印语句,同时日志记录可以输出到文件中,便于离线分析。
常见的日志记录框架有log4j、logback等,它们提供了丰富的配置选项,可以方便地控制日志的输出级别和格式。
4.调试工具:调试工具是一种集成了多种调试功能的软件,可以帮助开发者更方便地进行调试。
常见的调试工具有Eclipse、Visual Studio等。
调试工具提供了丰富的调试功能,包括断点设置、变量查看、堆栈跟踪等,可以大大提高调试的效率。
5.远程调试:在分布式系统中,可能需要在远程机器上调试程序。
远程调试是一种通过网络连接到目标机器,对程序进行调试的方法。
远程调试需要在目标机器上开启调试端口,并在调试工具中配置远程调试参数。
远程调试可以在开发者的本地环境中进行调试,避免了在目标机器上进行调试的麻烦。
6.单元测试:单元测试是一种通过编写测试代码来验证程序的正确性的方法。
单元测试可以模拟程序的输入和输出,隔离程序中的错误。
在测试过程中,可以使用断言语句来判断程序的输出是否符合预期。
Debug的使用(1)
实验二Debug的使用(一)一、实验要求和目的1.熟悉Debug环境。
2.掌握常用Debug命令的基本操作。
二、软硬件环境1.硬件环境:微机CPU 486以上,500MB以上硬盘,32M以上内存;2.软件环境:装有MASM 5.0、DEBUG、LINK和EDIT等应用程序。
三、实验涉及的主要知识单元在以后所有的实验中,都将用到Debug程序,首先学习一下它的主要用法。
(1) 什么是Debug?Debug是DOS、Windows都提供的实模式(8086方式)程序的调试工具。
使用它,可以查看CPU各种寄存器中的内容、内存的情况和在机器码级跟踪程序的运行。
(2) 我们用到的Debug功能●用Debug的R命令查看、改变CPU寄存器的内容;●用Debug的D命令查看内存中的内容;●用Debug的E命令改写内存中的内容;●用Debug的U命令将内存中的机器指令翻译成汇编指令;●用Debug的T命令执行一条机器指令;●用Debug的A命令以汇编指令的格式在内存中写入一条机器指令。
Debug的命令比较多,共有20多个,但上述6个命令是和汇编语言学习密切相关的。
在以后的实验中,我们还会用到一个P命令。
(3) 进入DebugDebug是在DOS方式下使用的程序。
我们在进入Debug前,应先进入到DOS方式。
用以下方式可以进入DOS:①重新启动计算机,进入DOS方式,此时进入的是实模式的DOS。
②在Windows中进入DOS方式,此时进入的是虚拟8086模式的DOS。
下面说明在Windows XP中进入Debug的一种方法,在Windows 98中进入的方法与此类似。
单击【开始】菜单中的【运行】命令,打开【运行】对话框,在文本框中输入“command”后,单击【确定】按钮。
图2-1 选择【运行】命令图2-2 在文本框中输入“command”进入DOS方式后,如果显示为窗口方式,可以按下Alt+Enter键将窗口变为全屏方式。
DEBUG命令用法速查
DEBUG命令用法速查
DEBUG是一种最为常见的调试工具,由由MS-DOS的系统盘提供,现在在WINDOWS95、98、2000态调试,而且还可以用于系统内存和磁盘的维护、软件的修改和加密解密等方面。
使用DEBUG要注(1)在修改软件时应注意,应避免在中DEBUG中写EXE为后缀的文件。
如果你需要这样作,就必(2)在命令表1-4中,有许多命令的参量定义由表1-3给出。
(3)一般命令中的整数参量都已十六进制数表示。
(4)字符串引号可用双引号,也可用单引号。
(5)在DEBUG中标志寄存器将按8个标志显示,每个标志用两个字母编码,以表示置位或清零。
表1-3 DEBUG命令参量
表1-4 DEBUG命令表
表 1-5标志寄存器显示含义。
Debug的使用方法PPT课件
例如,
- r ax
系统将响应如下:
AX F1F4 :
即AX寄存器的当前内容为F1F4,如不修改则按Enter键,否则,键入欲修改的内容如:
- r bx BX 0369 :059F
则把BX寄存器的当前内容修改为059F。
其中: drive: 是指定DEBUG文件的磁盘驱动器标识符,DEBUG是外部DOS命 令,所以必须把它从磁盘读入内存。若未指定,DOS将使用当前默认磁 盘驱动器。 path: 是DOS查找DEBUG文件的一个子目录串表示的路径。若未指定, DOS将使用当前工作目录。 d: 是DEBUG将要调试的文件所在的磁盘驱动器。 p: 是查找DEBUG将要调试的文件所需的子目录路径,若未指定,DOS 使用当前目录。 [.ext] 是DEBUG将要调试的文件名。 param 是将被调试的程序(或文件)的命令行参数。
2020/10/13
6
修改存储单元内容的命令
1. 输入命令E(Enter)
有两种格式:
1) 第一种格式可以用给定的内容表来替代指定范围的存储单元内容。 命令格式为: -E address [list]
例如,-E DS:100 F3'XYZ'8D 其中F3,‘X’,‘Y’,‘Z’和8D各占一个字节,该命令可以用这五个字节来替代 存储单元DS:0100到0104的原先的内容。
直到填满指定的所有单元为止。
2020/10/13
8
检查和修改寄存器内容的命令R(Register)
1. 显示CPU内所有寄存器内容和标志位状态
格式: -R 例如,
-r AX=0000 BX=0000 CX=010A DS=18E4 ES=18E4 SS=18E4 18E4:0100 C70604023801
Debug的使用方法
Debug的使用方法
在编程中,Debug(调试)是指在程序中寻找和修复错误(bug)的过程。
调试工具可以帮助程序员快速定位和解决问题。
下面是一些常用的调试技术和工具:
1. 打印调试信息:使用print语句或日志来输出程序中的变量
值和执行路径。
这可以帮助你理解程序的执行流程和变量的状态。
2. 断点调试:使用调试器(如Visual Studio Code或PyCharm 等)在代码中设置断点。
程序将在断点处停下来,使你可以逐行查看代码的执行情况,并在需要时检查变量的值。
3. 单步调试:使用调试器提供的单步执行功能,逐行执行代码。
这样可以逐步追踪程序的执行路径,并检查每个语句的结果。
4. 监视变量:在调试器中设置监视点,让程序在特定条件下停下来,以便检查变量的值和状态。
这对于查找引起问题的特定变量很有帮助。
5. 异常捕获:使用try-except块捕获异常,并在异常处理器中
打印或记录异常信息。
这样可以帮助你确定程序中可能导致错误的位置。
6. 单元测试:编写测试用例来验证代码的正确性。
如果测试用
例失败,它可以帮助你确定代码中的错误。
7. 查找错误信息:仔细阅读程序输出和错误信息,这些信息通常会指示问题所在的位置和原因。
请记住,调试是一个需要实践和经验的过程。
随着你的经验增长,你会变得更快地找出问题并解决它们。
Debug的使用方法
显示存储单元的命令D(DEBUG)
格式为: - D[address] 或 - D[range] 例如,按指定范围显示存储单元内容的方法为:
-D 100 120 067C:0100 067C:0110 067C:0120 ( 或 D 100 L21 ) C7 D7 0D 0A 32 33 33 34 - D5 C5 B4 C6 30 10 42 0C 03 41 42 43 44 45 46 47 - 48 49 4A 4B 4C 4D 4E 4F 8B ....2334....0.B. .ABCDEFGHIJKLMNO
装入命令L(Load)
1. 把磁盘上指定扇区范围的内容装入到存储器从指定地址开始的区域中
格式: -L[address [drive sector sector]] 2. 装入指定文件 格式: -L[address] 此命令装入已在CS:5CH中格式化了的文件控制块所指定的文件。 如未指定地址,则装入CS:0100开始的存储区中。
运行命令G(Go)
格式: -G [=address1][address2[address3 ...]] 其中,地址1指定了运行的起始地址,如不指定则从当前的CS:IP开始运行。 后面的地址均为断点地址,当指令执行到断点时,就停止执行 并显示当前所有寄存器及标志位的内容,和下一条将要执行的指令。
检查和修改寄存器内容的命令R(Register)
2. 显示和修改某个寄存器内容
格式: -R register_name
例如,
- r ax
系统将响应如下:
AX F1F4 :
即AX寄存器的当前内容为F1F4,如不修改则按Enter键,否则,键入欲修改的内容如:
- r bx BX 0369 :059F
Debug的使用方法
Debug的使用方法在软件开发过程中,经常会遇到各种bug和错误。
为了解决这些问题,开发人员需要使用debug工具进行调试。
本文将介绍debug 的使用方法,帮助读者快速定位和修复程序中的错误。
一、什么是debugDebug是一种用于查找和修复程序错误的技术。
通过使用debug 工具,开发人员可以跟踪程序的执行过程,查看变量的值和代码的执行路径,以及定位代码中的错误。
二、常用的debug工具1. IDE集成的debug工具:大多数集成开发环境(IDE)都提供了内置的debug工具,如Visual Studio、Eclipse等。
通过在IDE 中设置断点,开发人员可以逐步执行程序,并在每个断点处查看变量的值和代码的执行路径。
2. 命令行debug工具:除了IDE集成的debug工具,还有一些独立的命令行debug工具,如gdb、lldb等。
这些工具可以通过命令行参数设置断点、查看变量的值等。
三、使用debug工具的基本步骤1. 设置断点:在需要调试的代码行上设置断点。
断点可以是一个代码行,也可以是一个条件语句。
当程序执行到断点时,会暂停执行,并进入debug模式。
2. 执行程序:运行程序,并触发断点。
程序在执行到断点时会暂停,等待开发人员进行调试操作。
3. 查看变量的值:在debug模式中,开发人员可以查看变量的值。
可以逐步执行程序,每次执行一行代码,并在每个断点处查看变量的值。
如果发现变量的值与预期不符,就可以定位问题所在。
4. 跟踪代码的执行路径:在debug模式中,开发人员可以逐步执行程序,查看代码的执行路径。
通过观察代码的执行路径,可以发现代码中的逻辑错误。
5. 修复错误:当定位到错误时,开发人员需要修复错误。
可以通过修改代码、添加条件语句等方式来解决问题。
修复错误后,重新执行程序,验证修复效果。
四、debug技巧和注意事项1. 使用日志输出:在调试过程中,可以通过输出日志信息来跟踪程序的执行。
debug使用简介
2.如果命令后地址只跟偏移地址,则其段地址为: 命令: A,U,T,G,P:其默认段地址为 CS; 如 A 100 等价 ACS:0100; U 200等价U CS:200 命令:C,D,E,F:其默认段地址为 DS; 如 D100 等价 A DS:0100; E200等价E DS:200
计科系
1.显示存储单元的命令 D
直到填满指定的所有单元为止。
计科系
4.检查和修改寄存器内容的命令R(Register)
它有三种格式如下:
显示CPU内所有寄存器内容和标志位状态,其格式为: -R
例如, -r
AX=0000 BX=0000 CX=010A DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000 DS=18E4 ES=18E4 SS=18E4 CS=18E4 IP=0100 NV UP DI PL NZ NA PO NC 18E4:0100 C70604023801 MOV WORD PTR[0204],0138 DS:0204=0000
计科系
关于参数的重要说明:
1.指令中各种地址的写法为: <地址>:写法 段地址:偏移地址; 如 0234:0200 或 DS:0100或 CS:0200等 <偏移地址>:写法 0100或 100. <地址范围>:
写法1:段地址:起始偏移地址 结束偏移地址; 如:02B0:0100 200 或 DS:0100 0200 或 CS:0200 0500 写法2:段地址:L长度;如DS:0100 L100 等价 DS:0100 0200
退出DEBUG:
在DEBUG命令提示符下,键入Q命令,即可结束DEBUG 的运行,返回DOS操作系统环境。 计科系
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
DEBUG程序的使用一、在DOS的提示符下,可如下键入Debug启动调试程序:DEBUG [路径\文件名] [参数1] [参数2]Debug后可以不带文件名,仅运行Debug程序;需要时,再用N和L命令调入被调试程序。
命令中可以带有被调试程序的文件名,则运行Debug的同时,还将指定的程序调入主存;参数1/2是被调试程序所需要的参数。
在Debug程序调入后,根据有无被调试程序及其类型相应设置寄存器组的内容,发出Debug的提示符“-”,此时就可用Debug命令来调试程序。
∙运行Debug程序时,如果不带被调试程序,则所有段寄存器值相等,都指向当前可用的主存段;除SP之外的通用寄存器都设置为0,而SP指示当前堆栈顶在这个段的尾部;IP=0100h;状态标志都是清0状态。
∙运行Debug程序时,如果带入的被调试程序扩展名不是.EXE,则BX.CX包含被调试文件大小的字节数(BX为高16位),其他同不带被调试程序的情况。
∙运行Debug程序时,如果带入的被调试程序扩展名是.EXE,则需要重新定位。
此时,CS : IP和SS : SP根据被调试程序确定,分别指向代码段和堆栈段。
DS=ES指向当前可用的主存段,BX.CX包含被调试文件大小的字节数(BX为高16位),其他通用寄存器为0,状态标志都是清0状态。
二、DEBUG命令的格式Debug的命令都是一个字母,后跟一个或多个参数:字母 [参数]命令的使用中注意:①字母不分大小写;②只使用16进制数,没有后缀字母;③分隔符(空格或逗号)只在两个数值之间是必须的,命令和参数间可无分隔符;④每个命令只有按了回车键后才有效,可以用Ctrl+Break中止命令的执行;⑤命令如果不符合Debug的规则,则将以“error”提示,并用“^”指示错误位置。
许多命令的参数是主存逻辑地址,形式是“段基地址 : 偏移地址”。
其中,段基地址可以是段寄存器或数值;偏移地址是数值。
如果不输入段地址,则采用默认值,可以是缺省段寄存器值。
如果没有提供偏移地址,则通常就是当前偏移地址。
对主存操作的命令还支持地址范围这种参数,它的形式是:“开始地址结束地址”(结束地址不能具有段地址),或者是:“开始地址 L字节长度”。
三、DEBUG子命令1、显示命令DD(Dump)命令显示主存单元的内容,它的格式如下(注意分号后的部分用于解释命令功能,不是命令本身):D [地址];显示当前或指定开始地址的主存内容D [范围];显示指定范围的主存内容例如,显示当前(接着上一个D命令显示的最后一个地址)主存内容:左边部分是主存逻辑地址,中间是连续16个字节的主存内容(16进制数,以字节为单位),右边部分是这16个字节内容的ASCII字符显示,不可显示字符用点“.”表示。
一个D命令仅显示“8行×16个字节”(80列显示模式)内容。
再如:-d 100 ;显示数据段100h开始的主存单元-d cs:0 ;显示代码段的主存内容-d 2f0 L 20 ;显示ds:2f0h开始的20h个主存数据2、修改命令EE(Enter)命令用于修改主存内容,它有两种格式:E 地址;格式1,修改指定地址的内容E 地址数据表;格式2,用数据表的数据修改指定地址的内容格式1是逐个单元相继修改的方法。
例如,键入“e ds:100”,Debug显示原来内容,用户可以直接输入新数据,然后按空格键显示下一个单元的内容,或者按“-”键显示上一个单元的内容;不需要修改可以直接按空格或“-”键;这样,用户可以不断修改相继单元的内容,直到用回车键结束该命令为止。
格式2可以一次修改多个单元,例如:-e ds:100 F3`XYZ`8D ;用F3/`X`/`Y`/`Z`/8D这5个数据替代DS:0100 ~ 0104的原来内容3、填充命令FF(Fill)命令用于对一个主存区域填写内容,同时改写原来的内容,其格式为:F 范围数据表该命令用数据表的数据写入指定范围的主存。
如果数据个数超过指定的范围,则忽略多出的项;如果数据个数小于指定的范围,则重复使用这些数据,直到填满指定范围。
4、寄存器命d显示和修改处理器的寄存器,它有三种格式。
R;格式1,显示所有寄存器内容和标志位状态例如,当我们刚进入Debug时,就可以执行该命令,显示示例如下:其中,前两行给出所有寄存器的值,包括各个标志状态。
最后一行给出了当前CS : IP 处的指令;由于这是一个涉及数据的指令,这一行的最后还给出相应单元的内容。
R 寄存器名;格式2,显示和修改指定寄存器例如,键入“r ax”,Debug给出当前AX内容,冒号后用于输入新数据,如不修改则按Enter键。
RF;格式3,显示和修改标志位Debug将显示当前各个标志位的状态。
显示的符号及其状态如表F1.1所示,用户只要输入这些符号就可以修改对应的标志状态,键入的顺序可以任意。
5、汇编命令A汇编命令A(Assemble)用于将输入的汇编指令汇编成为机器代码保存于主存。
A [地址];从指定地址开始汇编指令A命令中如果没有指定地址,则接着上一个A命令的最后一个单元开始;若还没有使用过A命令,则从当前CS : IP开始。
输入A命令后,就可以输入8086指令,Debug将它们汇编成机器代码,相继地存放在指定地址开始的存储区中,记住最后要输入一个回车结束A命令。
进行汇编的步骤如下:①输入汇编命令A [地址],按回车。
Debug提示地址,等待你输入新指令;②输入汇编指令,按回车;③如上继续输入汇编指令,直到输入所有指令;④不输入内容就按回车,结束汇编,返回Debug的提示符状态。
A命令支持标准的8086(和8087浮点)指令系统以及汇编语言语句格式,但要注意以下一些规则:• 所有输入的数值都是16进制数;• 段超越指令需要在相应指令前,单独一行输入;• 段间(远)返回的助记符要使用RETF;• A命令也支持最常用的两个伪指令DB和DW。
6、反汇编命令U反汇编命令U(Unassemble)将主存内容按照机器代码形成汇编指令显示:U [地址];从指定地址开始,反汇编32个字节(80列显示模式)U 范围;对指定范围的主存内容进行反汇编U命令中如果没有指定地址,则接着上一个U命令的最后一个单元开始;若还没有使用过U命令,则从当前CS : IP开始。
屏幕显示的左边是主存逻辑地址,中间是该指令的机器代码,而右边则是对应的指令汇编格式。
7、运行命令G运行命令G(Go)从指定地址处开始运行程序,直到遇到断点或者程序正常结束。
G [=地址] [断点地址1,断点地址2,...,断点地址10]G命令等号后的地址指定程序段运行的起始地址,如不指定则从当前的CS : IP开始运行。
断点地址如果只有偏移地址,则默认是代码段CS;断点可以没有,但最多只能有10个。
程序遇到断点(实际上就是断点中断指令INT 3),停止执行,并显示当前所有寄存器和标志位的内容、以及下一条将要执行的指令(显示内容同R命令),以便观察程序运行到此的情况。
程序正常结束,将显示“Program terminated normally”。
注意,G命令以及后面的T和P命令要指向正确的指令代码,否则会出现不可预测的结果,例如“死机”。
8、跟踪命令T跟踪命令T(Trace),也称为单步命令,每执行一条指令就显示运行结果,使程序员可以细致地观察程序的执行情况。
T [=地址];逐条指令跟踪T [=地址] [数值];多条指令跟踪从指定地址起执行一条或数值参数指定条数的指令后停下来,每条指令执行后都要显示所有寄存器和标志位的值以及下一条指令。
如未指定地址则从当前的CS : IP开始执行。
注意给出的执行地址前有一个等号,否则会被认为是被跟踪指令的条数(数值)。
T命令逐条指令执行程序,遇到子程序(CALL)或中断调用(INT n)指令也不例外,也会进入到子程序或中断服务程序当中执行。
9、继续命令P继续命令P(Proceed)类似T命令,逐条执行指令、显示结果。
但是当遇到子程序调用、中断功能调用和循环指令等时,不在子程序、中断服务程序或循环体中单步执行,而是直接执行完成子程序、中断服务程序或循环体,然后显示结果。
当不需要调试子程序、中断服务程序或循环程序段时,要应用P命令,而不是T命令。
P [=地址] [数值]10、退出命令Q退出命令Q(Quit)使Debug程序退出,返回DOS。
Q命令并无存盘功能,可使用W命令存盘。
11、命名命令N命名命令N(Name)把一个或两个可以包含路径的文件全名存入Debug中,以便在其后用L或W命令把文件装入或存盘。
N 文件名1[,文件名2]12、装入命令L装入命令L(Load)将磁盘中的文件或扇区内容装载到主存中。
L [地址];格式1:装入由N命令指定的文件格式1的L命令装载一个文件到给定的主存地址处。
L 地址驱动器扇区号扇区数;格式2:装入指定磁盘扇区范围的内容格式2的L命令装载磁盘的若干扇区(最多80h)到给定的主存地址处;缺省段地址是CS。
其中,0表示A盘,1表示B盘,2表示C盘,……。
13、写盘命令W写盘命令W(Write)主存内容写入磁盘的文件或扇区中,与L命令相反。
W [地址];格式1:将由N命令指定的文件写入磁盘格式1的W命令将指定开始地址的数据写入一个文件(这个文件应该已经用N命令命名);如未指定地址则从CS : 100开始。
要写入文件的字节数应先放入BX(高字)和CX(低字)中。
如果采用这个W命令保存你的可执行程序,它的扩展名应是COM;它不能写入具有EXE 和HEX扩展名的文件。
W 地址驱动器扇区号扇区数;格式2:把数据写入指定磁盘扇区范围格式2的W命令将指定地址的数据写入磁盘的若干扇区(最多80H);如果没有给出段地址,则缺省是CS。
其他说明同L命令。
由于格式2的W命令直接对磁盘写入,没有经过DOS文件系统管理,所以一定要小心,否则可能无法利用DOS文件系统读写14、其它命令①比较命令C(Compare)C 范围地址;将指定范围的内容与指定地址内容比较② 16进制数计算命令H(Hex)H 数字1,数字2 ;同时计算两个16进制数字的和与差③输入命令I(Input)I 端口地址;从指定I/O端口输入一个字节,并显示④输出命令O(Output)O 端口地址字节数据;将数据输出到指定的I/O端口⑤传送命令M(Move)M 范围地址;将指定范围的内容传送到指定地址处⑥查找命令S(Search)S 范围数据;在指定范围内查找指定的数据⑦帮助命令??;显示各命令的简要说明。