• 第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

  • 相关阅读:
    我用Python爬虫挣钱的那点事
    猿人学 . 爬虫逆向高阶课
    Python中实用却不常见的小技巧
    Python内存数据序列化到硬盘上哪家强
    利用setuptools发布Python程序到PyPI,为Python添砖加瓦
    配置tmux在机器重启后自动恢复tmux工作现场,告别重启恐惧症
    用python实现新词发现程序——基于凝固度和自由度
    学习笔记:Python序列化常用工具及性能对比
    浅谈自然语言在科技时代的运用
    python学习笔记:建立一个自己的搜索引擎
  • 原文地址:https://www.cnblogs.com/shiwenjie/p/8825139.html
Copyright © 2020-2023  润新知