Foxdisk07-如何调试1

栏目: 编程语言 · 发布时间: 5年前

内容简介:在开发过程中,我主要采用两种方式进行调试,一是使用Debug.exe,通过U盘或者光盘,启动DOS,用debug观察程序是否如想象中的写入硬盘指定区域。在早期的版本中,我也曾经去除了写硬盘以及替换MBR的功能,编译了可以在DOS下运行的Foxdisk,方便自己在DOS下对其进行调试。Debug是个很好的工具,当年开发隔离卡和双网隔离计算机的所有底层代码,均是依靠它来进行的,简单而强大。另外一种调试方式则必须借助虚拟机了,我最常用的是使用bochs,它自带的调试功能,允许程序员看到所有的执行过程,当然也包括M

在开发过程中,我主要采用两种方式进行调试,一是使用Debug.exe,通过U盘或者光盘,启动DOS,用debug观察程序是否如想象中的写入硬盘指定区域。在早期的版本中,我也曾经去除了写硬盘以及替换MBR的功能,编译了可以在DOS下运行的Foxdisk,方便自己在DOS下对其进行调试。Debug是个很好的工具,当年开发隔离卡和双网隔离计算机的所有底层代码,均是依靠它来进行的,简单而强大。

另外一种调试方式则必须借助虚拟机了,我最常用的是使用bochs,它自带的调试功能,允许 程序员 看到所有的执行过程,当然也包括MBR的运行,以及如何把控制权转交给Foxdisk。因为Foxdisk是图形模式,进入图形模式之后,debug就没办法发挥作用了,后期所有的开发调试都是借助了bochs才得以进行下去。

当然,所有的调试环境使用的都是X86的汇编代码,intel指令集的参考书得常备手边。

Debug的命令不多,如图1所示,大概20几条,很容易记忆。

Foxdisk07-如何调试1

图1 debug常用命令

以一个例子开始debug的使用,尝试用debug将MBR区(也即硬盘线性地址LBA0)的512字节读出,并存到文件mbr.bin中。在当年流行mbr病毒的时候,这是经常使用的方法。

如图2,使用命令’a’,编写一串汇编指令。

Foxdisk07-如何调试1

图2 读取mbr

Debug中所有数据缺省都是16进制的,int 13实际上表示的是int 0×13(或者说int 13h)。使用int 0×13的02功能,读取mbr所在的位置(磁头0,磁柱0,扇区1)的数据,并拷贝到内存偏移0×200处(当前段)。

使用命令’d’查看读取到的数据。这是Foxdisk中Loader.asm编译后的二进制码,安装的时候写入到了mbr区域。

Foxdisk07-如何调试1

图3 写数据到文件

如图3,命令’w’将把BX:CX寄存器中指定字节数的内容写磁盘文件。因此,首先用命令’r’修改寄存器bx和cx。示例中需要保存的字节数为512个,因此,bx=0,cx=0×200。

‘w 200’的含义是将ds:0×200处的开始的数据,保存指定的字节数到文件中。

为了便于调试,Foxdisk中有些地方插入了标志字符串,比如Loader.asm开始的“LUOB”,这其实也是为了便于debug定位问题。

特将debug常用的命令记录在此,方便之后查看。

-?显示 Debug 命令列表

-a [address]指定键入汇编语言指令的位置。对 address 使用十六进制值,并键入不以

“h”字符结尾的每个值。如果不指定地址,a 将在它上次停止处开始汇编。

-d [range]指定要显示其内容的内存区域的起始和结束地址,或起始地址和长度。有如

果不指定 range,Debug 程序将从以前 d 命令中所指定的地址范围的末尾

开始显示 128 个字节的内容。

-t [=address]从指定地址起执行一条指令后停下来,显示所有寄存器内容及标志位的

值。如未指定地址则从当前的CS:IP开始执行。

-p [=address]从指定地址起执行指令,直到遇到断点,如未指定地址则从当前的CS:

IP开始执行。

-g [=address]从指定内存地址运行当前在内存中的程序。

-u [range]对指定范围内的存储单元进行反汇编。

-r [register]‘r’显示CPU内所有寄存器内容和标志位状态,‘r register name’则修改

某个寄存器内容。比如-r ax 修改寄存器ax的内容。

-q退出debug。

4 total views, 4 views today


以上所述就是小编给大家介绍的《Foxdisk07-如何调试1》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

多处理器编程的艺术

多处理器编程的艺术

(美)Maurice Herlihy、(美)Nir Shavit / 机械工业出版社 / 2013-2 / 79.00元

工业界称为多核的多处理器机器正迅速地渗入计算的各个领域。多处理器编程要求理解新型计算原理、算法及编程工具,至今很少有人能够精通这门编程艺术。 现今,大多数工程技术人员都是通过艰辛的反复实践、求助有经验的朋友来学习多处理器编程技巧。这本最新的权威著作致力于改变这种状况,作者全面阐述了多处理器编程的指导原则,介绍了编制高效的多处理器程序所必备的算法技术。了解本书所涵盖的多处理器编程关键问题将使在......一起来看看 《多处理器编程的艺术》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

MD5 加密
MD5 加密

MD5 加密工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具