zoukankan      html  css  js  c++  java
  • 调试操作系统专用虚拟机Bochs

    当我们编写操作系统时,像编写其他软件一样,都需要一个调试器,Bochs是一个很好的虚拟机,可以用来调试操作系统,完全模拟硬件。

    一、安装

    Bochs的官网是:http://bochs.sourceforge.net/

    可以从网上下载Bochs的源码并解压到一人文件夹,然后转到源码目录,实行如下语句可以编译、安装Bochs。

    1 ./configure --enable-debugger --enable-disasm
    2 make
    3 sudo make install

    ./configure后的参数是为了启用虚拟机的调试功能,我们用这个虚拟机的目录的也就是为了调试自己写的操作系统。

    二、启动

    Bochs是基于配置文件的,Bochs的配置文件一般如下:

    # how much memory the emulated machine will have
    megs: 32
    
    # filename of ROM images
    romimage: file=/usr/share/bochs/BIOS-bochs-latest
    vgaromimage: file=/usr/share/vgabios/vgabios.bin
    
    # what disk image will be used
    floppya: 1_44=freedos.img, status=inserted
    floppyb: 1_44=pm.img, status=inserted
    
    # choose the boot disk
    boot: a
    
    # where do we send log message?
    log: bochsout.txt
    
    # disable the mouse
    mouse: enabled=0
    
    # enable key mapping,using US layout as default.
    keyboard_mapping: enabled=1, map=/usr/share/bochs/keymaps/x11-pc-us.map
    

      在这个配置文件中,我们只需要注意

    floppya: 1_44=freedos.img, status=inserted
    

      和

    boot: a
    

      这两条语句即可,freedos.img是一个软件盘映像,第一条语句的意思是在软盘驱动器A中插入了一个软盘,而这个软盘就是那个软盘映像 *.img,第二语句是指从软盘驱动器A启动系统。如果此时软盘中有我们写的操作系统,就可以启动我们的操作系统了。

    要启虚拟机,只要转到配置文件所在的目录,执行如下语句

    bochs
    

      Bochs就会启动并在当前目录下按顺序寻找如下的默认配置文件

    .bochsrc
    bochsrc
    bochsrc.txt
    bochsrc.bxrc( 仅对Windows有效)
    

      所以配置文件名必须为上述文件名之一。

    如果虚拟机被编译为启用调试功能,执行“bochs”指令后还会出现一个文字菜单供选择,如果想略过这个步骤,可以在“bochs”后加个参数,如下

    bochs -q
    

      

    三、用Bochs调试操作系统

    当虚拟机启动后,会在第一条指令执行前暂停下来,在PC中一般在f000:fff0地址处,这个地址所对应的指令是jmp far f000:e05b,控制台的输出如下

    (0) [0x00000000fffffff0] f000:fff0 (unk. ctxt): jmp far f000:e05b         ; ea5be000f0
    

      此时只要输入“s”再回车就可以执行这条指令,如果想要程序流一直执行下去直到断点才停,可以输入“c" 再回车,程序执行后将停在断点处。设置断点方法如下

    b 0x7c00
    

      表示在地址为0x7c00处设置一个断点,指令执行到地址为0x7c00处将暂停。

      "n"也是单步执行指令,但遇到函数后将跳过函数体,不会单步进入函数中。

    更详细的信息可查阅Bochs的帮助文档。

    四、编译时的其他选项

    ./configure –enable-cdrom \
    –enable-debugger \
    –enable-disasm \
    –disable-readline \
    –enable-sb16 \
    –enable-ne2000 \
    –enable-vbe \
    –enable-all-optimizations \
    –enable-cpu-level=6 \
    –enable-sse=2 \
    –enable-3dnow \
    –enable-vme \
    –enable-sep \
    –enable-x86-debugger \
    –enable-pci \
    –enable-pcidev \
    –enable-clgd54xx \
    –enable-usb \
    –enable-plugins \
    –with-wx \
    

      如果不喜欢控制台的字符操作,可以加个"--with-wx"这个配置,启用图形界面

    /configure --enable-debugger --enable-disasm --with-wx
     make
     sudo make install
    

      

    .

  • 相关阅读:
    Java实现 计蒜客 拯救行动
    Java实现 计蒜客 拯救行动
    Java实现 LeetCode 174 地下城游戏
    Java实现 LeetCode 174 地下城游戏
    Java实现 LeetCode 174 地下城游戏
    Java实现 LeetCode 173 二叉搜索树迭代器
    Java实现 LeetCode 173 二叉搜索树迭代器
    Visual Studio的SDK配置
    怎样使用CMenu类
    mfc menu用法一
  • 原文地址:https://www.cnblogs.com/teafree/p/2199848.html
Copyright © 2011-2022 走看看