调试环境的搭建(三)-创新互联

    上节博客中我们写了一个主引导程序,运行的还算完美,已经正确的实现了我们想要的功能。那么问题来了,它只是显示一个字符串,如果在字符串没有显示出来程序就挂掉了,那么我们此时应如何去查证?换句话说,如何调试主引导区的代码?今天我们便来介绍下另一款优秀的虚拟机软件(Bochs)。

成都创新互联公司不只是一家网站建设的网络公司;我们对营销、技术、服务都有自己独特见解,公司采取“创意+综合+营销”一体化的方式为您提供更专业的服务!我们经历的每一步也许不一定是最完美的,但每一步都有值得深思的意义。我们珍视每一份信任,关注我们的网站建设、成都网站建设质量和服务品质,在得到用户满意的同时,也能得到同行业的专业认可,能够为行业创新发展助力。未来将继续专注于技术创新,服务升级,满足企业一站式成都全网营销需求,让再小的成都品牌网站建设也能产生价值!

        先来看看 Bochs 的一些特点:1、专业模拟 x86 架构的虚拟机;2、它是开源并且可移植度较高,源码是由 C++ 编写的;3、支持操作系统开发过程中的断点调试;4、通过简单的配置就能够运行于绝大多数主流的操作系统。

        那么支持调试功能的 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

        5、make

        6、make install

        经过以上六步就完成了 Bochs 的环境搭建了,值得注意的是博主在搭建过程中出现了一个错误,在第五步 make 的时候出现了:/usr/bin/ld: gui/libgui.a(gtk_enh_dbg_osdep.o): undefined reference to symbo 的错误以导致不能继续执行下去,经过搜查资料,解决办法是在 bochs-2.x.x 文件夹里的 Makefile,在92行左右找到 LIBS =。。。,在这一行最后面添加 -lpthread 就 ok 了。注:修改完成之后不能重新configure,不然添加的-lpthread会消失,添加后直接make就可以了。

        在搭建好环境之后我们便需要来配置一个启动文件 bochsrc.txt ,文件内容如下

调试环境的搭建(三)


       关于上面启动文件的中的几个路径确定方法如下:1、确定 bochs 的安装路径:which bochs;2、安装 vgabios,确定的它的路径:whereis vgabios。

        下来我们来看看启动 bochs 虚拟机的方法,分为两种:显示启动和隐式启动

        a> 显示启动:bochs -f bochsrc_file;

        b> 隐式启动:bochs

       调试环境的搭建(三)

        那么如何来验证调试环境呢?我们启动 bochs 后按 6 来模拟启动,然后输入 continue,如果出现的模拟终端显示出我们所要打印的字符串,那便算是我们已经成功安装 bochs 虚拟机了。下来看看最后的效果图

调试环境的搭建(三)

        我们在输入 bochs 隐式启动方式后,然后再输入 6 来进行模拟启动终端,效果如下

调试环境的搭建(三)

        我们看到在输入 continue 后终端成功的出现我们自己的输出的字符串,证明此时我们的 bochs 环境已经搭建成功了。那么我们如何来进行 bochs 的调试(类似与 Linux 中的 GDB 调试)呢? bochs 常用的一些调试命令如下

调试环境的搭建(三)

        我们来尝试下设置断点,如下

调试环境的搭建(三)

        我们看到在设置断点 0x7c00 之后,info 看下断点信息,确实是在 0x7c00 处打了个断点。继续 continue 执行,发现这时的虚拟机 bochs 已经上电成功。我们看到接下来它要执行的是 mov ax, cs 这条指令,是不是我们当时所写的 start 的第一条指令呢?确实是的,那么它后面的 8cc8 是什么意思呢?它指的是这条指令所对应地址的数据,下来我们继续执行 continue,看看最后效果

调试环境的搭建(三)

        我们看到已经成功执行了我们自己编写的主引导程序。下来我们执行下单步调试,看看结果

调试环境的搭建(三)

        我们看到 step 单步调试执行的结果和我们之前所编写的主引导程序的代码是一样的。通过今天对调试环境 bochs 的搭建,总结如下:1、bochs 是一款专业模拟 x86 架构的虚拟机;2、从源码安装 bochs 可以获得调试功能的支持;3、bochs 的启动配置文件是正确运行关键;4、bochs 支持断点调试,其调试命令与 GDB 调试类似。


另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


当前标题:调试环境的搭建(三)-创新互联
路径分享:http://pwwzsj.com/article/djhdcc.html