您的位置:首页 > 运维架构 > Linux

fedora17下用gdb和bochs调试linux-0.11内核

2014-01-10 14:41 549 查看
买了本赵炯博士<<Linux内核完全注释>>,开始学习内核源代码,首先就是动手搭建实验环境,所用操作系统为fedora17,首先下载安装bochs,root下用yum search bochs查看一下是否有bochs相关的安装包,发现有,则执行yum install bochs.i686,安装完毕。然后 根据http://www.oldlinux.org/oldlinux/viewthread.php?tid=3878中的步骤测试了http://oldlinux.org/Linux.old/bochs/linux-0.11-devel-050518.zip中的4个.bxrc文件,当然对于我安装的高版本的bochs-2.5需要根据www.oldlinux.org/oldlinux/viewthread.php?tid=13229&extra=page%3D1修改配置文件(可能还有其他的需要注释),并且将路径中‘\’改为'/',所有的都运行通过后,然后根据www.oldlinux.org/oldlinux/viewthread.php?tid=3809的描述下载了调试版的压缩包,在fc17下可以通过安装bochs-gdb来调试内核,同样通过yum安装bochs-gdb.

1)命令行下执行bochs-gdb -q -f bochsrc-fd1-gdb.bxrc,会发现有错误,将romimage: file=$BXSHARE/BIOS-bochs-latest,address=0xf0000后面的‘,address=0xf0000’删了,然后再执行,发现还有错误,此时只要根据错误提示将无法解析的配置选项用'#'注释了即可.此时再次运行,命令行会打印出Waiting for gdb connection on port 1234,模拟器的屏幕无内容输出。

2)打开另外一个shell,cd linux-gdb-rh9/linux/,执行和gdb tools/system,进入调试状态,在main处设置断点‘b main’,然后执行target remote localhost:1234,在之前的shell中将打印出Connected to 127.0.0.1,本shell中将输出

Remote debugging using localhost:1234

0x0000fff0 in sys_mkdir (pathname=0x0, mode=0) at namei.c:481
481    namei.c: 没有那个文件或目录.

3)在gdb环境中再执行命令“c”,则会执行到刚刚设置的断点init/main.c的main()函数处,就可以调试了,调试时bochs窗口中会打印出相应启动信息。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息