欢迎来到一句话经典语录网
我要投稿 投诉建议
当前位置:一句话经典语录 > 心得体会 > 利用debug调试心得体会

利用debug调试心得体会

时间:2017-01-25 11:52

怎样用Debug调试自己编的exe程序

DEBUG是一个DOS实用程序,是供程序员使用的程序调试工具,可以用它检查内存中任何地方的字节以及修改任何地方的字节。

它可以用于逐指令执行某个程序以验证程序运行的正确性,也可以追踪执行过程、比较一个指令执行前后的值以及比较与移动内存中数据的范围,读写文件与磁盘扇区。

DEBUG把所有数据都作为字节序列处理。

因此它可以读任何类型的文件。

DEBUG可以识别两种数据: 十六进制数据和ASCⅡ码字符。

它的显示格式是各个字节的十六进制值以及值在32与126之间的字节的相应ASCⅡ码字符。

在DEBUG中输入数据有两种方法: 提示方法和非提示方法。

在用提示方法时,用户可以输入要求输入数据的命令,后跟数据所要输入的地址。

然后用户就可以看到该地之中已有内容及一个冒号提示符。

此时用户可以在提示符下输入一个新的值或者按下回车键或CTRL+C回到短横(-)提示符。

在运用非提示方法时,用户可以输入要输入数据的内存地址以及要输入的字节。

但与使用字处理程序或正文编辑程序时不一样,在使用DEBUG时,用户不能直接移动光标到一入口点输入或修改数据,而要一次输入一个或几个字节。

在使用DEBUG时可以只涉及内存中的数据,从而一般都要指定所要处理的内存地址,地址的输入格式是: [段地址]: [位移]。

如果没有输入地址,DEBUG将假定为当前内存段,从位于地址100H的字节开始。

前100H字节保留给程序段前缀使用,这一专用区域用于建立DOS与程序之间的联系。

DEBUG总是用四位十六进制数表示地址。

用两位数表示十六进制数据。

讲到这里大家应该对DEBUG有了初步的了解,但是光知道这些可不够,接下来我来讲讲DEBUG的命令格式和命令。

当输入DEBUG调用了DEBUG程序,就会出现一个短横提示符,用户就可以在这一短横后输入DEBUG程序的命令。

有些DEBUG命令会显示一个内存地址并产生一个作为提示符的冒号。

在这些提示符后,用户可以输入一个新值以改变所显示位置原来的值。

如果用户不输入一个新值而是按下回车或CTRL+C,那么原来的值不会改变。

一般用不着把地址和命令名字分开。

例如,用转储命令D察看100号地址的数据,那么这个命令可以用以下任一种形势输入: D100D 100D。

100D,100如果输入的命令中出现了错误,DEBUG将在下一行对着错误的位置标记出来,例如: -s100 d 12^ErrorDEBUG的命令及功能如下: * A[地址] 汇编命令功能: 将指令直接汇编成机器码输入到内存中。

说明: 用于小段程序的汇编及修改目标程序,所有输入的数字均采用十六进制, 用户装入内存的汇编语句是连续存放的,若没有指定地址,并且前面没有使用汇编命令,改语句被汇编到 CS:0100区域。

* C[源地址范围][目的地址]比较命令功能: 比较两内存区域中的内容是否相同,若不同则显示其地址和内容。

* D[地址] 或D[起始地址][目的地址] 转储命令功能: 以内存映象方式显示内存中的信息。

说明: 转储用左右两部分显示内存映象内容,左边以十六进制,右边以ASCII字符显示,所有不可打印字符用句号(。

)表示。

每行显示16个字节的内容,在第八和第九个字节之间有一个连字符 - 此命令隐含的段地址为DS的值。

若未指定起始地址,则D命令从显示的最后一个单元的下一个单元开始显示,若以前没有使用给D命令, 则从初使化的段寄存器的内容,加上地址偏移量 0100H 开始显示。

* E[地址] [字节串) 修改内存命令功能: 从指定的地址开始修改内存值。

说明: 若地址部分只输入偏移量,则 E 命令认为段包括在DS寄存器中。

命令格式有两种:其一是用命令中包含的字节串替换从指定的地址开始的多个字节的内容;其二是命令后不跟字节串,则允许按顺序方式显示和修改字节,按下空格键为显示下一字节内容,若想修改,直接输入相应值。

* F[地址范围] [字节或字节串] 填写命令功能: 将要填写的字节或字节串填入由地址范围指定的存储器中。

* G[=起始地址] [[断点]……] 执行命令功能: 执行正在调试的程序,当达到断点时停止执行, 并且显示寄存器标志和下一条要执行的命令。

说明: 如果没有指定起始地址,那么当前指令地址由CS,IP寄存器的内容来决定,如果用户指定起始地址就从指定的起始地址开始执行。

如果指定断点,当指令到达指令地址时停止执行,并显示各寄存器标志位的内容和下一条要执行的命令,最多允许用户设定10个断点。

* H[数值][数值] 十六进制算术运算命令功能: 分别显示两个十六进制数相加的和以及第一个数减去第二个数的差。

说明: 替用户完成简单的十六进制数的运算。

* I[端口地址]功能: 从指定的端口输入并显示(用十六进制)的一个字节。

* L[地址][盘号:][逻辑扇区号][扇区数]功能: 将一个文件或盘的绝对扇区装入存储器。

说明: 单个L命令能够装入的最大扇区数是 80H,其中盘号 0,1,2,3……分别代表 A,B,C,……出现读盘错,显示错误信息。

* M[地址范围][起始地址] 数据传送命令功能: 把地址范围内的存储器单元的内容移到起始地址的指定地址中说明: 传送期间,源区和目标区可以部分重叠;传送后源区域数据保持不变。

* N[盘号: ] [路径] [文件名] [扩展名]功能: 定义操作文件名。

说明: 可同时定义两个操作文件,并将形成的文件控制块相应的设置在内存 CS:5C和CS:6C上,供以后的L和W命令操作之用。

* O[端口地址][数据] 输出命令功能: 发送字节到指定的输出端口。

* P[=地址] [数据] 进程命令功能: 将一个子程序调用指令,循环指令,中断指令或一个重复字符串指令,停止在下一条指令上。

说明: 在执行一条子程序调用指令,循环指令,中断指令或一个重复字符串指令时,发出P命令去执行有关指令,并且返回到要执行的下一条指令。

P命令与T 命令有相同的句法。

* Q 退出命令。

* R[寄存器] 寄存器命令功能: 一,显示单个寄存器的内容,并提供修改功能。

二,显示所有寄存器内容, 再加上字母标志位状态以及要执行的下一条指令。

三,显示8个标志位状态, 并提供修改功能。

* S[地址范围] [字符串]功能: 在指定的地址范围内查找给定的字符串。

说明: 用来指定在地址范围内查找一个字符串,若找到则显示其地址, 否则直接显示DEBUG提示符。

隐含地址为DS段值。

* T[=地址][指令条数] 跟踪命令功能: 逐条跟踪程序的执行,每条指令执行后都将显示各寄存器的内容。

说明: 通常采用跟踪一条指令,但用户也可以用指令条数设定一次跟踪多条指令, 每执行一条指令之后,显示所有寄存器的内容和标志状态。

* U[起始地址]或者[地址范围]功能: 将内存中的内容转换为汇编语句。

说明: 反汇编的字节数取决与用户的系统显示形式,以及在U命令中使用的可选项。

* W[地址] [盘符:] [起始扇区] [扇区数] 写盘命令功能: 将修改过的数据写到磁盘上。

说明: 可以将指定内存地址开始的数据写在磁盘上,可以在没有指定参数, 或指定地址参数的情况下,将调试文件写在磁盘上。

IntelliJ idea debug调试问题

可以在你认为有错误的程序前后设断点,然后在下面输入你要查看的变量,然后单步进行,看变量值是怎么变化的.

汇编debug调试方法

从你代码里面来看,应该就是DATA_LIST数据后面的两个字节.DEBUG里面看的时候,如果是已经汇编过的,调入DEBUG后,就是DS段指向的段基址内,自0000H单元,向后偏移10个字节开始的位置.用命令的话,应该是: - D DS:000A 从这个位置开始的两个字节,就是RESULT的值,注意是16进制的.如果不是已经汇编了的,可以用A命令输入汇编部分的主要代码,注意不是全部,然后以当时的DS内容为基础,构造数据段,建立DATA_LIST,其后的两个字节也就是RESULT,具体内容就看你怎么处理了.------------------------------------------Data_Seg segment Data_List db 10,20,30,40,50,5 dup(?) Result db 2 dup(?) Data_Seg ends------------------------------------------

汇编debug调试方法

既然是自己写的源文件,那么就介绍一个我自己的解决办法。

保证调试特别方便。

Result db 2 dup(?) 前面加一行 db 'RESULT:'即:db 'RESULT:'Result db 2 dup(?) 运行之后,输入-D命令,看看数据区里RESULT:后面的两个字节,就是Result的值了。

我以前写汇编常常这样调试。

用debug调试汇编的问题

DEBUG是用于调试可执行程序的,只识别汇编语言指令集中的指令、寄存器及具体数据,不识别常量名、变量名、标号和伪指令。

跳转也好,循环也好,都要指明具体地址。

0000:0100 SUB BX,AX0000:0102 jmp 100

声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。联系xxxxxxxx.com

Copyright©2020 一句话经典语录 www.yiyyy.com 版权所有

友情链接

心理测试 图片大全 壁纸图片