第3课 - 调试环境的搭建
在上节课中,我们编写的主引导程序代码量很小,实现的功能也很简单,就是在屏幕上打印一串字符 "Hello, DTOS"。可是当主引导程序代码量变得很大,功能很复杂的时候,我们编写的主引导程序代码就有可能出现 bug ,那么我们如何调试主引导程序的代码呢?
1. Bochs(另一款优秀的虚拟机软件)
bochs官网:http://bochs.sourceforge.net/
(1)Bochs 用于专门模拟 x86 架构的虚拟机
(2)开源且高度可移植,由 C++ 编写完成
(3)支持操作系统开发过程中的断点调试
(4)通过简单配置就能够运行绝大数主流的操作系统
2. 在ubuntu 上安装 Bochs
(1)下载源码:https://sourceforge.net/projects/bochs/files/
(2)解压缩 bochs-2.x.x.tar.gz → bochs-2.x.x
(3)进入源码目录:cd bochs-2.x.x
(4)./configure --enable-debugger --enable-disasm
-
-
- --enable-debugger compile in support for Bochs internal debugger
- --enable-disasm compile in support for disassembler(反汇编器)
-
(5)make 编译 bochs 源码
(6)sudo make install 安装 bochs
在编译的时候遇到了两个问题,在此记录一下:
问题一:执行 ./configure 的时候,报下面这个错误 ERROR: pkg-config was not found, or unable to access the gtk+-2.0 package.
然后手动安装 apt-get install libgtk2.0-dev,又出现了下面这个错误,真的是蛋疼。。。。
百度寻求解决方法,是软件的源出现了问题,因此需要更改 sources.list 文件(文件路径:/etc/apt/sources.list ),我将源更改为阿里云提供的源,我使用的是ubuntu14.04 发行版本,相关的源可以参考该博客: https://blog.csdn.net/u010053463/article/details/49300625。更改过源之后,一定要执行 apt-get update 命令更新本地的源的缓存,再执行 apt-get install libgtk2.0-dev 命令,成功安装 libgtk2.0 这个库。
问题二:配置完成后,make 编译 Bochs ,出现了下面这个错误
根据错误信息,推断是在链接过程中缺少了 pthread 库,因此修改 Makefile 文件,添加下面的部分,然后成功编译 Bochs 源码。
3. 配置 Bochs
启动 Bochs 前需要有正确的配置文件。
首先需要确定 Bochs 和 vgabios 两个程序的安装路径,因为 Bochs 的配置文件要用到相关的路径。
-
- 确定 bochs 的安装路径:which bochs
- 安装 vgabios:apt-get install vgabios
- 确定 vgabios 的安装路径:whereis vgabios
配置文件如下:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 ############################################################### 2 # Configuration file for Bochs 3 ############################################################### 4 5 # how much memory the emulated machine will have 6 megs: 32 7 8 # filename of ROM images 9 romimage: file=/usr/local/share/bochs/BIOS-bochs-latest 10 vgaromimage: file=/usr/share/vgabios/vgabios.bin 11 12 # what disk images will be used 13 floppya: 1_44=a.img, status=inserted 14 15 # choose the boot disk. 16 boot: floppy 17 18 # where do we send log messages? 19 # log: bochsout.txt 20 21 # disable the mouse 22 mouse: enabled=0 23 24 # enable key mapping, using US layout as default. 25 keyboard_mapping: enabled=1, map=/usr/local/share/bochs/keymaps/x11-pc-us.map
启动 Bochs 虚拟机:
显示方式:bochs -f bochsrc_file
隐式方式:bochs 会按照从上到下的顺序自动寻找当前目录下的配置文件
在命令行执行 bochs ,程序暂停,如下图所示,表明 bochs 可以断点调试
然后输入 continue 命令,成功输出字符串 "Hello, DTOS!"。至此,成功搭建了调试环境。
4. Bochs 中常用的调试命令
5. 小结
(1)Bochs 是一款专业模拟 x86 架构的虚拟机
(2)从源码安装 Bochs 可以获得调试功能的支持
(3)Bochs 的启动配置文件是正确运行关键
(4)Bochs 支持断点调试,其调试命令与 GDB 类似
注:本文整理于《狄泰12月提升计划》课程内容
狄泰QQ群:199546072
本人QQ号:502218614