调试程序DEBUG的使用
debug使用方法
debug使用方法
Debug的使用方法
Debug是一种调试程序的工具,它可以帮助开发人员诊断和修复编写的程序中的问题。
Debug的使用方法如下:
需要确保编写的程序是可调试的,即它必须有一定的调试功能,以便Debug可以正常运行。
使用Debug工具来开始调试程序,比如可以使用Visual Studio中的Debug工具,可以让用户设置断点,查看程序的变量值,监视内存,检查程序的流程,执行单步调试等,从而帮助开发人员发现程序中的错误。
在使用Debug进行调试的过程中,需要注意一些注意事项,比如不要在Debug模式下进行生产,以免程序发生严重的错误;不要在Debug模式下修改程序的源代码,以免程序发生不可预知的错误;在调试程序时,务必记得使用断点,以便及时发现程序中的错误。
在调试程序完成后,应该关闭Debug工具,以免占用系统资源。
Debug可以帮助开发人员有效地诊断和修复程序中的问题,但在使用Debug进行调试时,也需要注意一些注意事项,以免程序发生不可预知的错误。
调试Debug的步骤及使用
调试Debug的步骤及使⽤修改bug的步骤:原则:根据程序运⾏的顺序,⼀步⼀步分析1. 检查jsp页⾯请求是否提交到controller2. 检查controller是否接收到表单的数据3. 检查controller接收到的数据是否传到了Dao4. 检查sql是否执⾏成功,有没有返回正确的数据5. 检查dao的数据是否传到controller6. 检查controller的数据是否传到jsp,并正确显⽰IDEA DeBug调试技巧:1.设置断点选定要设置断点的代码⾏,在⾏号的区域后⾯单击⿏标左键即可。
2.开启调试会话点击红⾊箭头指向的⼩⾍⼦,开始进⼊调试。
IDE下⽅出现 Debug 视图,红⾊的箭头指向的是现在调试程序停留的代码⾏,在⽅法 f2() 中,程序的第17⾏。
红⾊箭头悬停的区域是程序的⽅法调⽤栈区。
在这个区域中显⽰了程序执⾏到断点处所调⽤过的所有⽅法,越下⾯的⽅法被调⽤的越早。
3.单步调试3.1 step over点击红⾊箭头指向的按钮,程序向下执⾏⼀⾏(如果当前⾏有⽅法调⽤,这个⽅法将被执⾏完毕返回,然后到下⼀⾏)3.2 step into点击红⾊箭头指向的按钮,程序向下执⾏⼀⾏。
如果该⾏有⾃定义⽅法,则运⾏进⼊⾃定义⽅法(不会进⼊官⽅类库的⽅法)。
具体步骤如下:在⾃定义⽅法发f1()处设置断点,执⾏调试点击3.3 Force step into该按钮在调试的时候能进⼊任何⽅法。
3.4 step out如果在调试的时候你进⼊了⼀个⽅法(如f2()),并觉得该⽅法没有问题,你就可以使⽤stepout跳出该⽅法,返回到该⽅法被调⽤处的下⼀⾏语句。
值得注意的是,该⽅法已执⾏完毕。
3.5 Drop frame点击该按钮后,你将返回到当前⽅法的调⽤处(如上图,程序会回到main()中)重新执⾏,并且所有上下⽂变量的值也回到那个时候。
只要调⽤链中还有上级⽅法,可以跳到其中的任何⼀个⽅法。
3.6 Run to Cursor点击这个按钮,程序将运⾏到当前光标所在位置如上图,当前程序停留在11⾏,光标在17⾏,点击箭头所指按钮,程序会运⾏到第17⾏(不需要设置断点):4.⾼级调试4.1 跨断点调试设置多个断点,开启调试。
DEBUG使用
北京化工大学信息科学与技术学院
马 静
1
调试程序DEBUG
调试程序DEBUG就是用来调试汇编语言程序的一种工具。 主要功能: ¾ 显示、修改REG、MEM的内容 ¾ 按指定地址启动并执行程序 ¾ 设置断点 ¾ 反汇编被调试程序 ¾ 单条追踪或多条追踪被执行程序 Nhomakorabea2
一、启动和退出DEBUG
3
在启动DEBUG时,将CPU各个寄存器和标志设置为以下状态: ¾ 4个段寄存器(CS,DS,SS和ES)置为指向自由内存空间的底部 (最小地址)。 ¾ 指令指针寄存器IP之外0100H ¾ 堆栈指针寄存器SP置为段的末尾处与的 暂驻部分的低地址中较低者。 ¾ 其余的寄存器(AX,BX,CX,DX,BP,SI,DI)置为0。
1、启动DEBUG (1) 进入DOS系统 Win2000系统:程序 附件 命令提示符,进入DOS 系统,如果不在根目录,使用CD..命令回到根目录,再使用 C:回到C盘根目录 Win98系统:直接在程序下选择MS-DOS方式,进入DOS系统。 其余与Win2000系统下相同。 (2) 启动DEBUG 在C盘根目录下输入DEBUG,按回车键,即可启动DEBUG。 此时可看到闪动的光标。
12
2、运行命令G -G [=address] [breakpoint] Address:指定开始执行指令的地址,如不写,从当前CS:IP 寄存器指定的地址开始跟执行。 breakpoint:指定断点地址。必须写 例:-G =0100 0120 回车 该命令将从CS:0100H 开始执行程序,执行到CS:0120H处 中止。即执行保存在CS:0100H到CS:011FH存储空间内的 程序。
8
A、修改该寄存器的值 AX 0000 :1020 该寄存器的内容会变为1020H B、不修改该寄存器的值 AX 0000 :回车 该寄存器的内容不改变 3. 显示标志寄存器的内容 -RF 回车 NV UP EI PL NZ NA PO NC- 若按下回车键,则保持每个标志位不变,若想修改某个标志位, 可输入此标志位的相反值,顺序无关。 9
DEBUG的使用及程序调试方法
实验一 DEBUG的使用及程序调试方法一.实验目的1、掌握常用DEBUG命令以及调试简单程序。
2、掌握常用汇编指令的功能及其书写格式。
3、掌握在DUBUG下进行简单程序设计并调试。
二.实验环境微型计算机一台DOS或WINDOWS操作系统,MASM开发套件。
三.实验原理DEBUG是专门为汇编语言设计的调试工具软件,它通过单步、设置断点等方式,为使用者提供了非常有效的调试手段。
在DEBUG 下所有输入的数据都是十六进制,所以不需要后面加H。
并且不区分大、小写字母。
1、直接启动DEBUG程序如在C盘的根目录下,启动的方法是:C:\>DEBUG_这时屏幕上会出现“_”提示符,等待键入DEBUG命令。
2、启动DEBUG程序的同时装入被调试文件命令格式如下:C:\>DEBUG [d:][PATH]filename[.EXT][d:][PATH]是被调试文件所在盘及其路径,filename是被调试文件的文件名,[.EXT]是被调试文件的扩展名。
3、DEBUG的主要命令(1)检查和修改寄存器内容的命令R,它有三种方式:1)显示CPU内部所有寄存器内容和标志位状态,格式为:-RR命令显示中标志位状态的含义如下表所示:标志名置位复位溢出Overflow(是/否)OV NV 方向Direction(减量/增量)DN UP 中断Interrupt(允许/屏蔽)EI DI 符号Sign(负/正)NG PL 零Zero(是/否)ZR NZ 辅助进位Auxiliary Carry(是/否)AC NA 奇偶Parity(偶/奇)PE PO 进位Carry(是/否)CY NC2)显示和修改某个指定寄存器内容,格式为:-R 寄存器名例如输入:-R AX系统将响应如下:AX F1F4:表示AX当前内容为F1F4,此时若不对其作修改,可按ENTER键,否则,输入修改后内容,如:-R BXBX 0369:059F则BX内容由0369改为059F3)显示和修改标志位状态,命令格式为:-RF系统将给出响应,如OV DN EI NG ZR AC PE CY-这时若不作修改可按ENTER键,否则在“-”号之后键入修改值,键入顺序任意。
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的使用方法
实验内容:编制程序
实现从键盘输入有符号十进制数子程序
子程序从键盘输入一个有符号十进制数
负数用"-"引导
正数直接输入或者用"+"引导
在主程序中给出输入的数的个数为10
输入的数存储到以array开始的10个字空间中
要求完成程序编制及调试
并用DEBUG观察运行结果
实验报告内容
实验题目:
实验目的:
实验内容:
程序清单
实验四 键盘控制发音程序
实验目的:通过编程对PC机中的8253和8255进行控制
db 100 dup(0)
stack ends
code segment 'code'
assume cs:code,ds:data,ss:stack
start proc far
push dx
mov ax,0
push ax
2):用D命令观察程序运行之前DS:0000处开始前20字节的内容并作记录
3: 用G命令从程序开始处运行到程序结束前一条指令
再用D命令观察DS:0000处开始的前20字节的内容
并作记录
并据此说明程序对数据段中的数据进行了哪些操作
改变按键后
计算机扬声器将按照新的频率发声
连续按不同的键
将一直能改变发音频率
直到按回车键退出该程序
实验报告内容
实验题目:
实验目的:
实验内容:
问题回答:所编制的汇编语言程序是如何对8253和8255进行控制的?各选择了什么工作方式?
并用DEBUG调试
debug 的使用
Debug是一种程序调试工具,主要用于帮助程序员检查和修复程序中的错误。
以下是如何使用Debug的基本步骤:
设置断点:断点是一种标记,告诉Debug从标记的地方开始查看。
在要设置断点的代码行上单击鼠标左键即可。
运行程序:在代码区域右击,选择Debug执行。
单步执行:点击Step Into(F7)这个箭头,或者直接按F7,以一行一行地操纵代码,从而判断程序的执行流程是否与预期一致。
查看变量值:在执行过程中,可以查看变量的当前值,以了解程序状态。
删除或禁用断点:选择要删除的断点,单击鼠标左键即可。
如果是多个断点,可以每一个再点击一次。
也可以一次性全部删除。
以上是使用Debug的基本步骤,但请注意,具体使用方式可能会根据Debug的具体版本和配置有所不同。
实验一熟悉使用调试工具软件DEBUG
实验一熟悉使用调试工具软件DEBUG引言调试是软件开发过程中不可或缺的一部分。
通过调试工具软件DEBUG,我们可以查找和修复程序中的错误、检查变量的值、跟踪代码的执行路径等等。
本实验旨在帮助学生熟悉DEBUG的基本功能和使用方法。
一、实验目标1.熟悉DEBUG软件的界面和基本功能;2.学会使用DEBUG软件进行程序的调试和跟踪;3.掌握DEBUG软件中的断点设置和单步执行等功能。
二、实验环境1. 操作系统:Windows 10;2.调试工具软件:DEBUG。
三、实验步骤[DEBUG软件界面截图](1)Registers窗口显示寄存器的内容,包括通用寄存器、段寄存器等;(2)Disassembly窗口显示汇编指令的内容;(3)Dump窗口显示内存中的内容;(1)r:显示寄存器的内容;(2)u:显示当前汇编指令的地址和指令;(3)d:显示内存中的内容。
通过执行这些指令,我们可以查看和了解程序的运行状态和内存存储的内容。
(1)g:运行程序;(2)t:执行一条指令,并显示执行结果;(3)p:执行一行汇编代码,并显示执行结果。
通过执行这些指令,我们可以跟踪程序的执行路径和变量的值。
6. 在Disassembly窗口中,双击一条汇编指令可以设置断点。
设置断点后,程序执行到断点处会自动停止。
在调试过程中,我们可以查看断点前后的变量值,检查程序是否按照预期执行。
(1)bp:查看断点列表;(2)bl:清除断点列表中的断点;(3)bd:删除一个断点。
通过执行这些指令,我们可以管理和控制断点,实现更精细的调试过程。
8. 在DEBUG软件界面中,点击工具栏上的“跟踪”按钮,可以选中“Trace over”、“Trace into”和“Animate”等选项。
这些选项分别表示在执行过程中是否显示详细过程、是否跳过函数调用、是否动画演示执行过程等。
通过选择不同的选项,我们可以根据需要自定义调试过程。
四、实验总结通过本次实验,我们了解了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调试程序的使用实验原理Debug调试程序是一种在软件开发过程中用于定位和修复程序错误的工具。
它可以帮助开发人员在程序运行时检测和诊断错误,并提供相应的信息以便于修复错误。
在本文中,我们将探讨Debug调试程序的使用方法以及其背后的原理。
Debug调试程序的使用Debug调试程序是由软件开发工具提供的一种功能,例如集成开发环境(IDE)或命令行调试器。
它允许开发人员以步骤方式执行程序,观察每一步的结果,并在每一步之间检查程序状态和变量的值。
以下是Debug调试程序的使用步骤:1.设置断点:断点是程序执行暂停的标记。
通过在代码中设置断点,开发人员可以指示调试器在该处暂停执行。
一般来说,可以在IDE 中点击代码行号或使用调试命令设置断点。
2.启动调试器:在设置断点后,可以启动调试器来执行程序。
调试器将会在达到断点处暂停执行,并等待进一步的调试命令。
3.逐步执行:一旦程序暂停在一个断点上,开发人员可以使用调试命令逐步执行代码。
常用的调试命令包括执行下一步、进入函数、跳出函数、继续执行等。
4.观察变量:在每个代码步骤中,开发人员可以查看变量的值以及程序状态。
这对于发现错误、理解代码逻辑以及验证程序逻辑非常有用。
5.修改变量值:在调试过程中,开发人员可以修改变量的值,以便验证不同的情况和修复错误。
这可以通过在调试器的变量窗口中直接修改变量值,或者在调试命令中使用特定的语法进行。
6.检查函数调用栈:函数调用栈是程序中函数调用的历史记录。
调试器允许开发人员检查调用栈,找到导致错误的函数调用路径。
7.调试复杂数据结构:在调试过程中,开发人员可能需要检查复杂的数据结构,例如数组、链表、对象等。
调试器通常提供了可视化工具和命令来帮助开发人员检查和修改这些数据结构。
8.寻找内存错误:调试器还可以帮助开发人员寻找内存错误,例如空指针解引用、内存泄漏等。
通过检查内存地址、跟踪内存分配和释放等功能,开发人员可以更容易地识别和修复这些问题。
DEBUG命令详解
DEBUG调试程序的使用一、DEBUG的启动在DOS系统提示符下,运行DEBUG命令即可启动。
命令格式:DEBUG [文件名全称]功能:启动DEBUG调试程序,并把指定名字的文件装载入内存,以供调试。
说明:启动DEBUG,实际就是让计算机执行DEBUG.EXE这个调试程序。
若该程序不在当前目录下,需要在命令中指定该程序所在的位置路径(包括其所在磁盘和文件夹)。
文件名全称指定要调试的文件名及其所在的位置路径。
若指定该选项,则在启动DEBUG时把该文件装载入内存,以供调试,该文件一般是EXE文件或COM文件。
若不指定该选项,则只启动DEBUG,不装载文件。
二、DEBUG常用命令1、D——显示内存单元内容的命令格式:D[开始地址[结束地址]]说明:①若“开始地址”和“结束地址”都指定,则显示指定地址范围内的内存单元的内容;若只指定“开始地址”,省略“结束地址”,则显示从“开始地址”开始的80H个字节的内容;若“开始地址”和“结束地址”都省略,则显示从上次显示的末字节单元的下一个字节开始的80H个字节的内容。
②“开始地址”可包含段地址,若省略段地址,则默认使用DS的值作段地址。
2、E——输入内容(修改内存单元内容)命令格式:E开始地址[数据表列]说明:①若指定数据表列,则用数据表列中的数据存入从指定地址开始的内存单元中;若省略数据表列,则先显示指定开始地址的内存单元的内容,等待你修改。
若需要修改,输入其内容,按空格键显示、修改下一个内存单元内容;若不需要修改,直接按空格键显示、修改下一个内存单元内容,修改完成后按回车键。
②“开始地址”可包含段地址,若省略段地址,则默认使用DS的值作段地址。
3、F——填充内容(修改内存单元内容)命令格式:F开始地址结束地址数据表列说明:①用数据表列中的数据存入由开始地址和结束地址指定范围内的内存单元。
若数据表列中的数据少于指定地址范围的内存单元数,则循环使用表列中的数据存入内存单元,若数据表列中的数据多于指定地址范围的内存单元数,则多余的数据被忽略。
DEBUG命令的功能及使用
DEBUG命令的功能及使用功能:1.单步执行:DEBUG命令可以逐条执行程序的指令,并在每个指令被执行后停止程序的执行。
这使得开发人员能够逐步查看程序的执行过程,以便找到潜在的错误和问题。
2.查看和修改内存:DEBUG命令允许开发人员查看程序运行时的内存状态,并且提供了一些命令来读取和修改内存中的数据。
这对于调试内存泄漏、内存溢出和指针问题非常有用。
3.断点:DEBUG命令可以在程序的特定位置设置断点,一旦程序执行到这个位置,就会自动停止执行。
这使得开发人员可以在关键点查看程序的状态,以便分析问题。
4.寄存器查看和修改:DEBUG命令允许开发人员查看和修改程序运行时的寄存器值。
这对于理解程序如何处理数据以及跟踪特定变量的值非常有用。
5. 注册表和文件系统访问:DEBUG命令可以访问Windows注册表和文件系统,以检查和修改系统的配置和状态。
这对于调试与注册表和文件系统相关的问题非常有用。
使用:1.运行DEBUG命令:在命令行窗口中输入"DEBUG"命令,然后按下回车键即可运行DEBUG命令。
DEBUG命令会显示一个提示符,表示它已经准备好接受命令。
2.设置断点:使用"t"命令可以在程序中设置断点。
例如,要在程序的第10行设置一个断点,可以输入"t10"命令。
3.单步执行:使用"p"命令可以逐步执行程序的指令。
每次执行一条指令后,DEBUG命令会显示当前指令的汇编代码和程序计数器的值,并等待用户输入下一个命令。
4.查看内存:使用"d"命令可以查看指定内存地址的内容。
例如,输入"d1000"命令可以查看地址为1000的内存单元的内容。
5.修改内存:使用"e"命令可以修改指定内存地址的内容。
例如,输入"e100090"命令可以将地址为1000的内存单元的内容修改为90。
实验一 DEBUG调试程序的使用
实验一DEBUG调试程序的使用实验一、实验目的1.熟悉 DEBUG 调试程序中的常用命令。
2.学会在 DEBUG 下调试运行汇编语言源程序。
二、实验内容1.熟悉DEBUG常用命令的使用: A、U、D、E、R、G、T、L、W、Q常用命令。
2.在DEBUG下编写汇编语言程序,实现多字节(5个字节)十进制加法。
三、实验用设备仪器及材料硬件:计算机软件:DEBUG调试软件四.实验方法和步骤1.在开始菜单\命令提示符下,进入DOS环境。
2.在DOS目录下启动DEBUG。
3.熟悉DEBUG常用命令,详细记录每一步所用的命令及查看结果的方法和具体结果。
4.在DEBUG下编写程序,实现多字节十进制加法实验。
五.实验提示DEBUG常用命令A:编辑和汇编源程序。
格式:-A 地址U:反汇编验证源程序。
格式:-U 地址R:观察或修改寄存器的内容。
D:显示存储单元的内容。
格式:-D 地址E:修改存储单元的内容。
格式1:-E 地址格式2:-E 地址单元数据单元数据……G:设置断点运行源程序。
格式:-G=首地址末地址T:单步执行程序。
执行结束后显示 AX、BX、CS、IP 寄存器内容的变化,并显示下一条要执行的指令的地址和内容。
格式:-T=地址或者-T=地址值N:文件命名。
格式:-N *.comL:将某个文件或特定磁盘扇区的内容加载到内存。
格式:-L 地址W:将程序写到磁盘。
如果不指定 address,Debug 程序将从 CS:100 开始。
在写盘操作之前要用R命令修改bx,cx的内容(存放写的字节数)。
Q:退出本次实验的内容均在 DEBUG 下完成,实现数据的装入、修改、显示;汇编语言程序段的编辑、汇编和反汇编;程序的运行和结果检查。
DEBUG的使用及调试方法
DEBUG的使用及调试方法在软件开发过程中,调试是非常重要的一环。
调试是指通过排除软件中的错误或故障,确定程序的正确性和可靠性的过程。
在调试过程中,开发者需要使用各种工具和技术来定位和解决问题,其中DEBUG是一种常用的调试工具。
1.打印调试信息:在代码中添加打印语句,将关键信息输出到控制台或日志文件中。
这个方法简单直接,可以帮助开发者快速定位问题。
然而,过多的打印语句会对程序的性能造成影响,并且需要手动添加和移除。
2.使用断点:断点是调试器提供的一种功能,可以在代码中设置一个断点,当程序执行到断点时,会暂停执行。
开发者可以在断点处检查变量的值,观察程序的执行流程。
调试器还提供了单步执行、继续执行等功能,可以逐行调试程序。
使用断点可以直观地观察程序的执行过程,快速找到错误。
3.日志记录:使用日志记录可以在代码中记录程序的执行过程和状态,以便后续分析。
使用日志记录可以避免过多的打印语句,同时日志记录可以输出到文件中,便于离线分析。
常见的日志记录框架有log4j、logback等,它们提供了丰富的配置选项,可以方便地控制日志的输出级别和格式。
4.调试工具:调试工具是一种集成了多种调试功能的软件,可以帮助开发者更方便地进行调试。
常见的调试工具有Eclipse、Visual Studio等。
调试工具提供了丰富的调试功能,包括断点设置、变量查看、堆栈跟踪等,可以大大提高调试的效率。
5.远程调试:在分布式系统中,可能需要在远程机器上调试程序。
远程调试是一种通过网络连接到目标机器,对程序进行调试的方法。
远程调试需要在目标机器上开启调试端口,并在调试工具中配置远程调试参数。
远程调试可以在开发者的本地环境中进行调试,避免了在目标机器上进行调试的麻烦。
6.单元测试:单元测试是一种通过编写测试代码来验证程序的正确性的方法。
单元测试可以模拟程序的输入和输出,隔离程序中的错误。
在测试过程中,可以使用断言语句来判断程序的输出是否符合预期。
调试程序DEBUG的使用
值相同,并指向最低的、可用的段地址;SP指向本 段的尾部;IP指向本段的0100H单元;其它通用寄存 器和所有状态标志清0。
启动DEBUG程序
3
调
试
程
序
DEBUG
如带入的被调试程序扩展名不是.EXE,则BX、CX 包含被调试文件长度(字节数,BX为高位),其他 同上。(带入.COM程序同此)
c:\>path c:\windows\command;c\turbo\masm
打通以上路径后, 在DOS任何路径下都可以使用上述 命令
1
调
试
程
序
DEBUG
调 试 程 序 DEBUG 的 使 用 DEBUG.EXE是DOS提供的用于调试可执行程 序的工具软件,是汇编语言程序设计中常用 的调试工具。在DEBUG环境下,不但可以调试 经汇编、连接后生成的可执行程序,也可以 编写简单的程序。
*输入命令I I 端口地址;输入一个字节并显示。 *输出命令O
O 端口地址 字节数据;输出到指定的端口。 *传送命令M
M 范围 地址;将指定范围的内容传送到以指
定地址为起点的存储单元。
其它命令2
23
R命令
12
调
试
程
序
DEBUG
② R 寄存器名;显示并修改指定的寄存器。 RAX ;RIP;RF等 5.汇编命令A A [地址];从指定的地址开始输入符号指令; 如省略地址,则接着上一个A命令的最后一个单元开 始;若第一次使用A命令省略地址,则从当前CS:IP 开始(通常是CS:100)。 注释:①在DEBUG下编写简单程序即使用A命令。 ②每条指令后要按回车。 ③不输入指令按回车,或按Ctrl+C结束汇编。 ④支持所有8086符号硬指令,伪指令只支持DB、 DW,不支持各类符号名。
DEBUG调试程序
1、启动DEBUG程序
(2)启动DEBUG程序的同时装入被调试文件
在DOS系统提示符下键入以下命令:
C:\>CD 16BIT ↙
C:\>16BIT>DEBUG[路径\]文件名↙
DEBUG程序执行,并将指定文件装入内存, 供调试。
调试程序DEBUG的使用
2、退出DEBUG环境
2、退格式2: D <地址范围> 功能:显示所指定地址范围的内容,指定地址范围 为起始地址和终止地址。
二、常用的DEBUG命令
操作过程如图所示。
二、常用的DEBUG命令
6、修改内存单元命令 E 格式1: E <地址><单元内容> 功能:将指定内容写入指定地址单元代替原来内容,然后显示 下一地址。可连续键入修改内容,直至新地址出现后键 入回车为止。其中<单元内容>是一个16进制数,或是用 引号括起来的字符串。 格式2: E <地址><单元内容表> 功能:该功能用<单元内容表>逐一修改由指定地址开始的连续 内存单元的内容。<单元内容表>是以逗号分隔的16进制 数,或是用引号括起来的字符串,或者是二者的组合。
二、常用的DEBUG命令
操作过程如图所示。
二、常用的DEBUG命令
8、显示命令 R
格式1:R 功能:显示CPU内所有寄存器内容、标志位状态及将要执行的 下一指令的地址、机器码及汇编语句形式。 格式2:R <寄存器名> 功能: 显示和修改指定寄存器内容。若不需修改内容,直接按 回车,否则在‚:‛后键入修改内容。键入修改内容后按回车 键有 效。 格式3:RF 功能:显示和修改状态标志位内容,TF标志位除外。若不需修 改内容,直接按回车,否则键入要修改内容。
调试程序DEBUG命令说明
调试程序DEBUG命令说明
DEBUG是常用的汇编语言级调试工具,为汇编语言程序员提供了分析指令、跟踪程序的有效手段
如何进入Debug程序?
答:在命令提示符下输入“debug”回车即可
懂得汇编的朋友,相信看懂下面命令是没多大问题的。
常用命令:
-A 汇编格式:A 起始地址
例如:输入“A”,回车,然后输入“MOV AX,10”回车。
再按一次回车,则退出汇编状态。
-U 反汇编格式:U 起始地址结束地址
例如:接上面,输入“U”,回车,即可看到结果。
以下不再举例,类似上面,有待自己研究,这样记得更牢。
谢谢!
-T 单步执行格式:T 起始地址运行指令数
-G 断点执行格式:G 起始地址断点地址结束地址
-D 数据显示格式: D 起始地址结束地址
-R 显示修改寄存器
格式:R 寄存器名
-P 单步执行,不进入中断
格式:T 起始地址运行指令数
-F 连续填入内存内容
格式:起始地址结束地址要填入的数值系列
-E 单个修改内存内容
格式: E 地址填入内容
-Q 退出debug状态
格式: Q 回车
状态标志位的值如下图:
不常用命令:
-M 内存搬家指令:
格式:M 起始地址结束地址目的地址-H 16进制加法:
格式:H 操作数1 操作数2
结果显示:加法结果减法结果。
Debug的使用方法
Debug的使用方法
在编程中,Debug(调试)是指在程序中寻找和修复错误(bug)的过程。
调试工具可以帮助程序员快速定位和解决问题。
下面是一些常用的调试技术和工具:
1. 打印调试信息:使用print语句或日志来输出程序中的变量
值和执行路径。
这可以帮助你理解程序的执行流程和变量的状态。
2. 断点调试:使用调试器(如Visual Studio Code或PyCharm 等)在代码中设置断点。
程序将在断点处停下来,使你可以逐行查看代码的执行情况,并在需要时检查变量的值。
3. 单步调试:使用调试器提供的单步执行功能,逐行执行代码。
这样可以逐步追踪程序的执行路径,并检查每个语句的结果。
4. 监视变量:在调试器中设置监视点,让程序在特定条件下停下来,以便检查变量的值和状态。
这对于查找引起问题的特定变量很有帮助。
5. 异常捕获:使用try-except块捕获异常,并在异常处理器中
打印或记录异常信息。
这样可以帮助你确定程序中可能导致错误的位置。
6. 单元测试:编写测试用例来验证代码的正确性。
如果测试用
例失败,它可以帮助你确定代码中的错误。
7. 查找错误信息:仔细阅读程序输出和错误信息,这些信息通常会指示问题所在的位置和原因。
请记住,调试是一个需要实践和经验的过程。
随着你的经验增长,你会变得更快地找出问题并解决它们。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
演示:DEBUG的两种启动方法
启动DEBUG2
4
调
试
程
序
DEBUG
R命令
12
调
试
程
序
DEBUG
② R 寄存器名;显示并修改指定的寄存器。 RAX ;RIP;RF等 5.汇编命令A A [地址];从指定的地址开始输入符号指令; 如省略地址,则接着上一个A命令的最后一个单元开 始;若第一次使用A命令省略地址,则从当前CS:IP 开始(通常是CS:100)。 注释:①在DEBUG下编写简单程序即使用A命令。 ②每条指令后要按回车。 ③不输入指令按回车,或按Ctrl+C结束汇编。 ④支持所有8086符号硬指令,伪指令只支持DB、 DW,不支持各类符号名。
N命令
S命令
L命令
I命令
W命令
O命令
C命令
M命令
H命令
命令索引
8
调
试
程
序
DEBUG
§3.DEBUG命令
1.显示命令D ① D [地址] ② D [范围] ;如不指定范围,一次显示8行×16个字节。
-D ;默认段寄存器为DS,当前偏移地址 -D DS:100 /-D CS:200 -D 200:100 -D 200;200为偏移地址,默认段寄存器DS -D DS:100 110/ -D 100 L 10
E命令
10
调
试
程
序
DEBUG
3.添充命令F
F 范围 数据表; 将数据表写入指定范围的存储单元;数据个数 多,忽略多出的数据,个数少,则重复使用数据表。 -F DS:0 L5 01,02,03,04,05 -F DS:0 L5 01 02 03 04 05(空格分隔) -F DS:0 L5 FF ;5个字节重复使用FF
A命令
13
调
试
程
序
DEBUG
6.反汇编命令U ① U [地址];从指定地址开始反汇编32个字节 的机器指令;省略地址时,则接着上一个U命令的最 后一个单元开始;若第一次使用U命令省略地址,则 从当前CS:IP开始(通常是CS:100)。
② U 范围;对指定范围的单元进行反汇编。 -U -U100 -U100L10
命令格式
5
调
试
程
序
DEBUG
2.参数格式
①表示地址(逻辑地址): 段地址:偏移地址 D0400:2500 D10ac:0 Dds:04 Dcs:100 偏移地址 D2505 D100 ;DEBUG认为输入的是偏 移地址,段地址采用默认的段寄存器,不同的命 令默认不同的段寄存器,例如汇编命令默认CS, 显示数据命令默认DS。 既不送段地址,也不送偏移地址,段地址采用默 认的段寄存器,偏移地址采用当前值。 只送段地址,省略偏移地址,非法。 如DDS: 或 D0400:
L命令
20
调
试
程
序
DEBUG
13.写盘命令W ① W [地址];将指定地址开始的内存数据写 入磁盘,生成N命令指定的文件;默认的内存地址为 CS:100;写盘的字节数由BX(高位字)和CX(低位字)决 定,可执行程序写盘时,文件扩展名应指定.COM。 -N MY_ -W ② W 地址 驱动器号 扇区号 扇区数;将内存数 据写入磁盘的若干扇区(最多80H);默认的段地址 为CS。 -W DS:0 2 0 1 注释:写磁盘扇区要慎用。
c:\>path c:\windows\command;c\turbo\masm
打通以上路径后, 在DOS任何路径下都可以使用上述 命令
1调试程 Nhomakorabea序
DEBUG
调 试 程 序 DEBUG 的 使 用 DEBUG.EXE是DOS提供的用于调试可执行程 序的工具软件,是汇编语言程序设计中常用 的调试工具。在DEBUG环境下,不但可以调试 经汇编、连接后生成的可执行程序,也可以 编写简单的程序。
U命令
14
调
试
程
序
DEBUG
7.运行程序命令G ① G;从CS:IP指向的指令开始执行程序,直到 程序结束或遇到INT 3。 ② G=地址;从指定地址开始执行程序,直到程 序结束或遇到INT 3。 ③ G 断点1[,断点2,…断点10];从CS:IP指 向的指令开始执行程序,直到遇到断点。 ④G=地址 断点1[,断点2,…断点10] -G ;从CS:IP指向的指令开始执行程序。 -G=100 ;从指定地址开始执行程序。 -G=100 105 110 120
D命令
9
调
试
程
序
DEBUG
2.修改命令E ① E 地址 ;从指定地址开始,修改(或连续 修改)存储单元内容。DEBUG首先显示指定单元内容, 如要修改,可输入新数据;空格键显示下一个单元 内容并可修改,减号键显示上一个单元内容并可修 改;如不修改,可直接按空格键或减号键;回车键 结束命令。
② E 地址 数据表;从指定的地址开始用数据 表给定的数据修改存储单元。 -E DS:100 F3 ‘AB’ 8D。
N命令
19
调
试
程
序
DEBUG
12.装入命令L ① L [地址];装入N命令指定的文件,默认的内
存地址为CS:100。 -N MY_ -L ② L 地址 驱动器号 扇区号 扇区数;将某驱动 器的若干扇区(最多80H个)装入内存;0=A,1=B, 2=C……;默认的段地址为CS。 -L DS:200 2 0 1
*输入命令I I 端口地址;输入一个字节并显示。 *输出命令O
O 端口地址 字节数据;输出到指定的端口。 *传送命令M
M 范围 地址;将指定范围的内容传送到以指
定地址为起点的存储单元。
其它命令2
23
调试程序DEBUG的使用
2
调
试
程
序
DEBUG
§1.启动DEBUG程序 ①在DOS提示符下键入:DEBUG ↙(表示回车) Debug执行,屏幕显示提示符“-”,说明计算机 当前处于DEBUG的管理之下,可接受、并执行 DEBUG命令。 ②在DOS提示符下键入:DEBUG [路径\]文件名↙ DEBUG执行,并将指定文件装入内存,供调试。
G命令
15
调
试
程
序
DEBUG
注
释:
1)最多可设置10个断点。 2)断点必须设置在一条指令的首字节。 3)如设置了多个断点,程序在第一个断点停下 后,显示寄存器、标志及下一条要执行的指令,再次
输入G命令,程序继续往下执行,直到下一个断点或
程序结束。 4)程序如有错误,执行时可能造成死机。
G命令2
16
调
试
程
序
DEBUG
8.跟踪命令(单步执行命令)T ① T;从当前IP开始执行一条指令。 ② T 数值;从当前IP开始执行多条指令。 ② T =地址; ③ T =地址 数值; -T -T5 / -T=100 5 必须用分割符
T命令
17
调
试
程
序
DEBUG
9.跟踪执行并跳过子程序命令P
P [=地址] [数值];类似T命令,但跳过子程序
如不指定被调试程序,DEBUG设置所有段寄存器的
值相同,并指向最低的、可用的段地址;SP指向本 段的尾部;IP指向本段的0100H单元;其它通用寄存 器和所有状态标志清0。
启动DEBUG程序
3
调
试
程
序
DEBUG
如带入的被调试程序扩展名不是.EXE,则BX、CX 包含被调试文件长度(字节数,BX为高位),其他 同上。(带入.COM程序同此)
§2 DEBUG命令和参数的格式
1.命令格式 命令字母[参数] 字母不分大小写; 只使用16进制数,不加H; 分割符只在两个数值之间是必须的,命令和 参数之间可有可无; 键入回车键执行命令,Ctrl+Break或Ctrl+C 中止命令的执行; 如命令不符合DEBUG的规则,则提示“error” 并使用“^”指示错误位置。
W命令
21
调
试
程
序
DEBUG
14.其他命令 *比较命令C C 范围 地址;将指定范围内的内容与以指定
地址为起点的内容相比较。 *16进制数计算命令H
H 数1,数2(H 数1 数2);同时计算两个数 字的和与差。 *查找命令S
S 范围 数据;在指定范围内查找指定数据。
其他命令1
22
调
试
程
序
DEBUG
和中断服务程序。
10.退出DEBUG命令Q Q;返回DOS环境。 -Q
P、Q命令
18
调
试
程
序
DEBUG
11.命名命令N
N 文件标示符;指定文件,以便用W命令在磁盘 上生成该文件,或者用L命令从磁盘装入该文件。 -N MY_ 写盘:在当前盘当前目录生成指定文件。 读盘:在当前盘当前目录读取指定文件。 - N A:\ USER \ MY_
参数格式1
6
调
试
程
序
DEBUG
②表示范围
开始地址 如“D DS:0 结束地址 50”,“D2AC0:100 200”,“D100 120”
注意:结束地址不能带段地址 开始地址 L 字节长度 如 “D DS:0 L 10”, “D100L20”
参数格式2
7
调
试
程
序
DEBUG
命 令 索 引
D命令 U命令 E命令 G命令 F命令 T命令 R命令 P命令 A命令 Q命令