2024年5月4日发(作者:)
张嘴
牛 调
第15卷第2期 交通与计算机
v()L.15 No.2
1997年4月
Computer and Coramun[cat[ons
April.1997
'
几种动态调试工具软件
郭冀生
【武汉交通科技大学 武汉430063)
般说来,人们把软件工具理解为,为了 系统,它是基于Inte1386指令榘而设计的,进
软件设计、制作、测试、维护而研制的专用软
入386DEBUG,便进入了全32位的环境、即
件,如各种编辑系统,代码生成器、设计规范
它支持32位的指令、32位数据运算、32位寄
描述语言、调试和排错系统等。
存器、32位寻址方法,特别是支持80386的
人们可根据软件研制的不同阶段,利用
保护模式。
不同的软件工具。尤其在软件的调试、排错
在386DEBUG中,地址均直接用8位十
过程中往往需要有适合于系统环境的、功能
六进制数字表示(即32位地址),不同于在实
较强的调试工。具,如目前常用的.
方式下的表示形式(段:倡移量)。另外
386DEBUG、SOURCER、FSD、386/D0S—
386DEBuG通过运算子或指令前缀完成l6
Exteder、Dis*Doc等。
位运算。它具有断点设置,显示和改变内存单
值得注意的是这些工具均由不同的公司
元或寄存器内容。I/O操作,单元、多元操作
研制,往往伴随着不同的系统,有的隐岔在系
符处理,显示运行结构,全面动态调试,跟踪
统之中,给用户使用带来不便。本文结合
系统运行等功能。
Netware的调试讲就这些调试工具的结构、
386DEBUG在SERVER.EXE中,且隶
组成,及其主要功能.适应范围进行了分析和
属于Polling进程。当服务器操作系统
比较,有益于人们更好的运用这些工具
SERVER.ExE引导成功后,在驻留内存状
1几种典型的调试工具
态下,进入386DEBUG有兰种途径。
1)在局域阿系统状态下,局域网程序服
1.1.Netware中隐含的386DEBUG
务器异常结束或GPIS服务器之后,输入
386DEBUG是隐含在网络操作系统
386DEBUG命令(此命令不回显到屏幕上),
Netwax ̄386的SERVER.EXE中的莺耍调
屏幕上出现调试程序的提示符“#”以示进入
试工具,是适应于系统自身的交互式的程序
386DEBUG状态。
2)直接在代码段中放INT3中断指令。
收穑日期 l997一Ol~lo
即当服务器操作系统启动成功后,在系统提
门,
第2期 郭冀生:几种动态调试工具软件 69
示符“:”下,系统可以执行不步程序(如
NOVELL网络操作系统提供的或用户自行
自动处理被索引的跳转邪调用}
在大多数TSR(驻留程序)中识别中
在项(item)的定义处显示交叉索引{
开发的可装载模块),此进若将INT3指令放
断入门;
入这些程序的代码段中,则在这些程序的执
行过程中,一且遇到INT3,服务操作系统将
终止程序韵正常运行,自动进入386DE—
BUG。
自动检测设备驱动程序的入门点I
支持8088/87至80386/387和80486
对多助记符指令进行更正;
SRV4.58由27个主要文件组成
指令集的反汇编}
例如:ISADISK DSK是Novell网络操
作系统所提供的ISA硬盘驱动器程序.现将
该程序中187H处的字节内容改为CCH
(INT3指令的机器代码).然后在服务器操作
系统提示符“:”下,加载IsADlsK(LOAD
ISADISK<Enter))则系统将会进入
386DEBUG.出现提示符“#”.同时显示
386DEBUG的版本信息,当前中断原因,寄
存器内容和下一条要执行的指令。
3)在系统控制台 : 状态下,键入组合
键:Ah+ShiIt+Shift+Esc。
上述三种方式都可在服务器操作系统
SERVER.EXE的状态下进入386DEBUG,
般来说.前两种方式多用于调试
Netware386的可加载模块NLM。第三种方
式可用于调试当前的服务器操作系统
SERVER EXE。
当屏幕上出现 #”后,即可选用
386DEBUG相应的调试命令,对已驻留在内
存中的系统软件或程序进行调试。
386DEBuG有求助,改变显示内存单元
内容,IIO括号操作符、单元、多元、圆点等ll
太类命令功能。
1.2 sOURcER(sR)超级反汇编工具
SOURCER是一类功能较强的超级反汇
编软件,可对.EXE.COM,SYS,OVL文件
进行九遍扫描,能处理大型文件,可对内存可
执行文件进行反汇编,产生具有详细注释的
汇编源程序。该软件自推出以来,已有不少版
本,目前常用的SOURCER高版本有SRV
4.56,V5.04.它们具有以下特点:
其中三个批处理文件README.BAT.
READMES.BAT,READMET.BAT完成对
整个系统的注释。
1.3 FSD全屏幕调试工具
FSD(Full Screen Debug)是IBM公司推
出的全屏幕调试软件,它与DEBUG的最大
区别在于它是一个全屏幕集成环境的调试工
具.所有命令的输入,寄存器值和内存状态等
都集中显示在一个屏幕上,方便了用户的使
用。
FSD V1.4版本主要由FSD.COM.
FSD.SET两个文件组成.总长度为53KH。
FSD在IBM PC系列机(包括xT,AT.386,
PS/2系列及其它所有IBM兼容机)上运行,
它需要DOS2 0以上的版本。
当FsD运行后,出现一个满屏主菜单.
整个屏幕可以分为六大部分,首先是位于屏
幕上方韵寄存器区。显示CPU寄存器的内
容.包括:
通用寄存器:AX,BX,CX,DX,SI,D1,
IP,BP和SP。 。
段寄存器:CS,DS,F- ̄S,ss,和FS
标志寄存器:(FLAGs)O F'DF,IF,SF,
AF,PF和CF
另外,还有当前找(Stack)的内容,共4
个字,“+l0”处为当前栈顶。
左下方是人机交互区,即CMD)(命令行
Cammand line),用户根据调试的要求在此区
内键入合法的命令,即可进行相应的调试。接
70 交通与计算机 第15卷
着是代码区,显示反汇编程序代码和源程序
数据段。
行,每一反汇编行的左边以十六进制偏移量
着显示构成该指令的所有代码,反汇编后的
3)通过DOS软件中断系统提供系统服
4)由386 l DOS--Extender捕获中断和
方式显示指令的地址,缺省的段值为CS,接
务。
指令显示在右边,当前程序的执行位置由寄 系统调用,再由386 lOS-D-Extender转换成
存器IP指示。男外还有两个数据区,一个位
实方式并将调用传送给DOS,当控制从DOs
OS-D-Extender又转回到保护
于代码区的右边,一个在下面,它们显示所选
返秽厥,386l
内存的原始数据,每行最左边按十六进制的 方式。
段名,偏移量(倒DS:0100)方式显示所在地
址,接下来是数据项,第一个数据区每行显示
8个字节的数据,而第二区则可显示l6个字
节,且在最右边显示对应的ASCII码字符,两
区可显示的字节数均为8O。
屏幕的最后一行即为第六区:提示信息
区,指出了F1一F1o这个10个功能键的作
用
FSD有装入文件、写文件、寄存器操作、
反汇编、I/O、执行、断点设置、显示模式等命
令。
1.4 Phar Lap 386 I DOS--Extender
Phar Lap 386
DOS--Extender是Phar
Lap Software Inc公司推出的程序设计系统,
它允许用户创建在DOS下运行的386保护
方式程序,Phar Lap 3861DOS ̄Extender用
个特殊模块(run386.exe)建立386保护方
式环境,在该环境里,通过32位寻址和扩展
寄存器,用户能够存取全部虚拟空间(4G字
节),还能访问386微机的许多先进设备
(GDT.LDT,IDT表等)。相应Phar Lap程
序有386/ASM汇编程序,386/LINK连接编
辑程序以及联机调试程序 386jD0s—
Extender和全 32操作系统的区别表现在以
下几个方面:
1)所有程序在386 lDOS--Extender中
都以特权级0运行,任何程序都能使用特权
指令。
2)连接程序将所有程序段放在一个较大
物理段中,而该段是可读的代码段和可写的
5)请求系统调用时,386 l D0s—
Extender要用250个字节的调用程序的堆栈
空闻,如多次调用,应使堆栈足够大
1.5反汇编工具Dis*Doc
Dis*Doc软件是由RISwantek Inc公
司开发的功能较强的反汇编软件,采用重叠
式窗口以及弹出式菜单和鼠标器为用户提供
了一个快速的交互式接口,联机后帮助系统
可在操作的各个阶段提供服务。
Dis*Doc V2.3版本主要由以下十一
个文件组成。
DD DAT
DD ERR
DD EXE
READ MEI
UNPACK EXE
DEMO · EXE
DEM0 PSM
DEM032 EXE
DDINT TXT
MAKEINT EXE
SCOPY EXE
TELLME EXE’
它有反汇编、匹配、帮助等六类命令
2调试工具的分析比较
上面对几种反汇编工具作了简要介绍,
结合这些工具在分析调试Netware时的运行
状况,从运行环境.被调试程序的限制、准确
度三方面,进行了分析和比较。
第2期 郭翼生;几种动态调试工具软件
2.1工作环境
FSD、Dis*Doc、DXDEBUG、SOURC—
只要当前内存足够,388DEBUG就可以调试
任一大型程序而不受840KB的限制。
为了减少对被调试程序长度的限制,在 ER和386DEBUG都属于计算机系统中的软
件范畴,但它们在计算机系统的层次图中所
调试SERVER.EXE过程中,我们用到Dis*
处的位置却不相同,FSD、Dis*Doc、
Doc中的实用程序SCOPY,该程序可将大型
DXDEBUG和sOuRCER是运行在系统软 的程序细分为等太小的一系列小型文件,而
件DOS上的工具软件,如图3.25所示,其运 其结构和内容均不变。因此,我们使用
行必将受到DOS的约束和限制(例如,DOS
scOPY提供的细分功能,将SERVER.EXE
能管理的最大内存空间为64OKB)。而
分成多个小文件,从而便于在不同环境下进
386DEBUG却是隶属于Novelt网络操作系 行反汇编或调试。
统Netware中的控制台命令进程。
正因为Dos仅为运行在Netware上的
2.3准确度
准确度主要包括以下三个方面的内容;
及代码和数据的区分率。
指令系统是一个计算机所有指令的集
解释)成以指令形式表示的机器语言后才能
运行,所以支持的指令系统集这一项将在一
个进程,因此386DEBuG运行并不受
调试工具所支持的指令系统集、工作方式以
DOs的限制(寻址空间和处理速度方面)而
受限于Netwa ̄,而Netware是基于Intel
80386指令集而设计的垒32位、多用户多任
合,用各种语言编写的程序都要翻译(编译或
务的网络操作系统.寻址范围达2 。
2.2被调试程序的限制
般来讲,所有调试工具对其可调试或 定程度上反映调试工具的适应范围,从8088
装入的程序长度均有一个限制,超过该界限 开始的Intel微处理器系列机的发展已经历
后,调试工具将不能有效工作或完全不能工
了5个阶段:8088/8086,80286,80386,80486
作。
和Pentium,相应的指令系统分别分8088/
8086,80286,80386,80468,和Pentium指令
从以上分析得知,FSD、DD(Dis*Doc)、
SOURCER和DXDEBUG都要受到DOS
系统、指令系统盼功能逐步增强,8088/8086
640KB的限制,再加上系统软件(DOs)和调 指令系统共有91条指令,而80286指令集除
试程序自身要占用一定的的内存空间,故留 完全包含了8088/8086的91条指令外,还增
给被调试程序的空间往往不足800KB(通常 加了26条新指令。Intel微处理器系列机保
为500KB左右),这样可调试装入的程序无 持了软件向上兼容的特点,即低档机上的软
疑是有限的
件可不加修改地在新机型上运行。另外,计算
有些软件为了克服Dos在内存空间上 机(或微处理器)的工作方式也有了变化,自
的限制,能支持EMS(tr充内存规范)或 80286起不再是单一的实方式(Real mode),
xMs(扩展内存规范)管理,从而增加当前可 还增加了保护方式(Protected mode) 两者的
用内存空间,便于调试更大的程序。 主要区别如下(以38§机为例):
SOURCER就是其中之一,386DEBUG也是
地址形式:实方式下为段:偏移重。保
可寻址范围:实方式下为2 }保护方
如此,因它在Netware之中,而网络操作系统
护方式下为32位二进制数字,32位偏移量
Netware是一个多用户多任务的全32位操
作系统,在该环境下,通过32位寻址和扩展
寄存器,用户能够存取全部内存空间,因此,
式下为2
寻址方式:实方式下段寄存器左移4位
72 交通与计算机 第l5卷
后与偏移量相加,得到物理地址 在保护方式 是因为反汇编是一个十分复杂的工作,它不
下,段寄存器被称之为选择符,用于在全局描 仅涉及到许多方面,而且田程序的执行是动
述符表(GDT)或局部描述符表(LDT)中选 态的、全局的,反汇编软件一般采用静态或局
择相应描述符,由描述符的基地址与偏移量 部反汇编,故在此,我们仅给出各个调试工具
相加.再得到物理地址,因此,较实方式下要 在区分率上的相对比较,另外代码和效据的
复杂很多,系统在保护方式下,在存储管理和 区分率还依赎于支持的指令系统集和工作方
多任务方面具有极大优势,而工作在实方式 式等因素,倒如,一个采用80386指令集,实
下的80386就像是一个具有扩晨指令集和寄
方式下的程序段中有这样的机器码:66H,
存器的高速8088/8086,逸完全是出于兼容
33,OCOH。支持80386指令集的其反汇编软
性考虑。
件将反汇编成:xOR EAX,EAX.如果仅支
代码和数据的区分率是衡量一个反汇编 持80286.则反汇编为:DB66H和xOR A
软件好坏的重要因素,区分率越高,反汇编的
AX,这样本来应为指令的结果.变成了数据
效果将越好,而要定量地给出区分率是不容 和指令的混合体,降低了代码和数据的区分
易的.我们知道,反汇编过程是不可逆的,即
率。
任何语言编写的过程可以经过翻译生成可执
FSD Dis *Doc、DXDEBUG、
行的机器代码,但从机器代码经过反汇编就
SOURCER和386DEBuG的准确度见表1
不一定能得到相应的源程序或汇编程序,这
表l
应该指出的是,以上所有软件均不可能
DXDEBUG的U16和U32}SR的80386
支持实方式到保护方式的转换,而系统
Rea[和Protected等
SERVER.EXE又是先在实方式下运行,建 相比较而言,对调试sAERVE.EXE来
立用手保护方式下的表和寄存器后.再转至 说.386DEBUG具有一定优势.但它有一个
保护方式,因此,对SERVER.EXE的反汇
致命弱点,就是不能改变堆栈寄存器ESP的
编和分析是一项艰巨的任务。实践中,我们采 值,这也是SERVER.EXE的优点,因为它
用了针对不同段、不同工作方式选择不同操
保护了网络操作系统的安垒。
作的反汇编方法.掰如Dis*Doe的处理器选
择80386/387 16bit和386/387 32bit.
发布评论