内容简介:在开发过程中,我主要采用两种方式进行调试,一是使用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几条,很容易记忆。
图1 debug常用命令
以一个例子开始debug的使用,尝试用debug将MBR区(也即硬盘线性地址LBA0)的512字节读出,并存到文件mbr.bin中。在当年流行mbr病毒的时候,这是经常使用的方法。
如图2,使用命令’a’,编写一串汇编指令。
图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区域。
图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》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- iOS常用调试方法:断点调试
- 断点调试和日志调试之间的平衡点:函数计算调试之 Python 篇
- .NET高级调试系列-Windbg调试入门篇
- VisualStudio 通过外部调试方法快速调试库代码
- GDB 调试 Mysql 实战(二)GDB 调试打印
- 使用gdb调试工具上手调试php和swoole源码
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
多处理器编程的艺术
(美)Maurice Herlihy、(美)Nir Shavit / 机械工业出版社 / 2013-2 / 79.00元
工业界称为多核的多处理器机器正迅速地渗入计算的各个领域。多处理器编程要求理解新型计算原理、算法及编程工具,至今很少有人能够精通这门编程艺术。 现今,大多数工程技术人员都是通过艰辛的反复实践、求助有经验的朋友来学习多处理器编程技巧。这本最新的权威著作致力于改变这种状况,作者全面阐述了多处理器编程的指导原则,介绍了编制高效的多处理器程序所必备的算法技术。了解本书所涵盖的多处理器编程关键问题将使在......一起来看看 《多处理器编程的艺术》 这本书的介绍吧!