| 
 UID2033152 威望1 点 金钱3090 金币 点卡0 点 
 | 
1#
 发表于 2002-12-19 13:51 
 | 只看该作者 
 [转帖]调试程序
| 初学者编制程序,往往会出不少错误,即使是一个经验丰富的程序员,在编制大的、复杂的程序时, 也会出错,在一个教长的程序中,怎样能很快的找到错误所在呢? 这就需要借助
 程序调试程序 DEBUG.
 1、 调试程序的调用
 在pcdos的提示符下,才能调用调试程序,如
 a>dubug[d:][文件名。[扩展名]]
 其中debug为调试程序文件名,后面是文件标识符,就是要调试的用户程序 。
 podos先调入debug 程序,然后由debug 调入用户程序。这时,段寄存器(cs,ds,es 和ss)置于 程序结束
 后的第一段;指令指针ip 置为0100H。
 2、有关 命令的一些共同信息
 (1)debug 命令都是一个字母,后跟有一个或多个参数。
 (2)命令和参数都用大写或小写或混合方式输入。
 (3)命令和参数间可用定界符分隔,然后定界符只是在两个邻接的16进制之间是必须的。
 因此下列命令是等效的:
 d cs:100 110
 d cs:100,110
 (4)可以按ctrl-break 键来停止一个命令的执行,返回 提示符。
 (5)每一个命令都有按了回车键 以后才有效,并开始执行。
 3、几种常用的 命令
 (1) 反汇编命令u
 格式:u[address]
 反汇编命令的功能是把内存中某一区域的目标码内容汇编成汇编指令的形式
 并给出每一条指令的地址。如果在执行命令是不给出地址,那麽反汇编则从当前cs:ip 开始汇编起
 (2)跟踪单步命令 t
 格式:T[=address].
 跟踪单步命令允许你逐条的或逐段的跟踪所要调试的程序段。它有两种形式,它们是
 t 和t=address
 t 允许从当前的 cs:ip 跟踪起,每跟踪一条指令,就停下来,显示出本条指令
 执行的结果、cpu 所有寄存器和标志位状态,并显示出下一条指令的地址和内容。
 t=address 这种形式与前一种没有大差别,不过指定了跟踪的起始地址为address
 (3)退出命令q
 退出 命令的格式是
 q
 执行这个指令后,终止 debug 程序的执行,返回到dos.
 (4)输出指令
 此命令向指定的端口输出一个字节。
 格式: o portadderss byte
 例如
 o 3bc 42
 把 字节值输出到端口 中.
 (5)输入指令
 此命令能从指定的端口输入个1字节且显示出来。
 格式:i portaddress
 例如
 I 34
 5f
 从端口地址34h 输入一字节的内容5fh
 
 | 
 |