bochs+gdb源码级调试Linux 0.12内核测试环境构建

http://www.linuxidc.com/Linux/2011-06/36746.htm

之前都是用的bochs自带的debug功能,但是linux内核大部分都是用C语言来实现的,若仅通过反汇编的汇编来学习,太累了。。。

所以今天花了一个上午的时间,搭建起了bochs+gbd的联调huanjing。

安装环境:Ubuntu 11.04 (2.6.38) bochs 2.4.6 gdb 4.5.2

首先还是要安装bochs,仍然是推荐使用最新的版本(2.4.6),如果使用像2.3.6等老版本,也许会导致后面与gdb无法远程连接 (NND,就是这个恶心的问题浪费了我几个小时。。。) linux上还是要从bochs的源码编译开始安装,bin文件安装的版本无法提供调试功能。配置bochs源码时,输入命令 ./configure --enable-gdb-stub,然后使用make和sudo make install命令完成安装。

安装时可能会遇到X windows库不全的情况,可以通过apt-get安装xorg-dev解决。

接着是配置bochs虚拟机环境,配置一个.bxrc文件和生产一个根文件系统镜像文件,建议直接到oldlinux上下载一个linux- 0.11-gdb-rh9-050619.tar.gz,其中已经包含了配置好的这两个文件,另外在linux文件夹下有linux0.11的源码。

.bxrc文件中主要是添加了一条调试信息

gdbstub: enable=1, port=1234, text_base=0, data_base=0, bss_base=0

另外,这个bxrc文件中需要稍稍修改一些东西:

1. romimage: file=$BXSHARE/BIOS-bochs-latest,  address=0xf0000

改成 romimage: file=$BXSHARE/BIOS-bochs-latest

2. floppy_command_delay: 50000

改成 #floppy_command_delay: 50000

3.ips: 4000000

改成 cpu: count=1, ips=4000000

接着就可以来进行联调了。

1. 打开两个终端。

2. 一个终端进入到linux-gdb-rh9/,运行程序"./run",此时窗口显示等待信息“wait for gdb connection on localhost:1234”

3. 另一个终端进入linux-gdb-rh9/linux/,运行 gdb tools/system

4. 在gdb窗口中输入b main(在main函数处下断)

5. 输入target remote localhost:1234 ,连接到bochs虚拟机上

6. 输入c,让程序持续运行,直到终端在main函数中

7. 可以开始使用gdb进行源码调试了^_^

之后可以对源代码进行修改再调试。需要注意的是,早期源码默认的汇编编译器为gas,链接器为gld,所以在Makefile文件中显示声明 as=gas ld=gld。而在ubuntu 11.04中,gcc早已成为默认的编译器了,所以如果是另外下载的源码,需要将Makefile中的as=gas ld=gld改成 as=as, ld=ld 。。。(这个修改确实比较2。。。)


<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
阅读(748) | 评论(0) | 转发(3) |
给主人留下些什么吧!~~
评论热议
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值