第3课 - 调试环境的搭建

第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
    • 安装 vgabiosapt-get install vgabios
    • 确定 vgabios 的安装路径:whereis vgabios

  配置文件如下:

 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 虚拟机:

    显示方式: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

posted @ 2018-04-14 00:37  Hengs  阅读(432)  评论(0编辑  收藏  举报