忘记密码   免费注册 查看新帖 | 论坛精华区

ChinaUnix.net

  平台 论坛 博客 认证专区 大话IT HPC论坛 徽章 文库 沙龙 自测 下载 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
12下一页
最近访问板块 发新帖
查看: 11478 | 回复: 17

[FreeBSD] 使用QEMU调试FreeBSD/Linux内核 [复制链接]

论坛徽章:
0
发表于 2006-06-19 18:17 |显示全部楼层
背景:

调试FreeBSD内核时:

我们的内核代码存放的路径为/kerndebug/sys

我们要调试的内核的配置文件为/kerndebug/sys/i386/conf/KERNDEBUG

已经在QEMU中装好的FreeBSD的硬盘文件为/kerndebug/freebsd.img

具体步骤:

1.编译内核注意在/kerndebug/sys/i386/conf/KERNDEBUG中需要选项

    makeoptions DEBUG=-g

  [prime@localhost]$cd /kerndebug/sys/i386/conf

  [prime@localhost]$config KERNDEBUG

  [prime@localhost]$cd ../compile/KERNDEBUG

  [prime@localhost]$make cleandepend

  [prime@localhost]$make depend NO_MODULES=1

  [prime@localhost]$make NO_MODULES=1

  OK,现在我们得到两个文件kernel与kernel.debug

2.把kernel复制到/kerndebug/freebsd.img

  [root@localhost]#mdconfig -a -t vnode -f /kerndebug/freebsd.img

  md0

  [root@localhost]#mount /dev/md0s1a /mnt

#保存从前的内核,也许并不需要保存

  [root@localhost]#mv /mnt/boot/kernel /mnt/boot/kernel.old

  [root@localhost]#mkdir /mnt/boot/kernel



  [root@localhost]#cp /kerndebug/sys/i386/compile/kernel

  > /mnt/boot/kernel/

  [root@localhost]#umount /mnt

  [root@localhost]#mdconfig -d -u 0

3.开始调试内核

  [prime@localhost]$qemu -hda /kerndebug/freebsd.img -s&

  [prime@localhost]$cd /kerndebug/sys/i386/compile/KERNDEBUG

  [prime@localhost]$gdb kernel.debug

  (gdb)target remote localhost:1234


同样的道理,我们也可以调试Linux kernel。

背景:

  新下载解压后的内核代码在/linux-2.6.15,基本系统使已经用Gentoo的base,

qemu的硬盘文件为/linux.img,gentoo的安装盘为gentoo.iso

1.编译内核

   [prime@localhost]$cd /linux-2.6.15/

   [prime@localhost]$make menuconfig

  注意打开内核调试选项,把符号表编译进内核

   [prime@localhost]$make

  如果有modules,安装modules,注意不要覆盖了现在使用的modules。

   [prime@localhost]$make modules_install

  现在在/lib/modules/2.6.15/已经那装了关于modules的文件,并且得到了

  两个文件,/linux-2.6.15/vmlinux /linux-2.6.15/arch/i386/boot/bzImge

  2.把modules文件安装到硬盘文件linux.img

   [prime@localhost]$qemu -cdrom gentoo.iso -hda linux.img -boot d&

   在host机上起动sshd,在qemu中,挂载硬盘文件

   [root@localhost]#mount -t ext3 /dev/hda2 /mnt/gentoo

   [root@localhost]#mkdir /mnt/gentoo/lib/modules/2.6.15

   [root@localhost]#scp prime@xxx.xxx.xxx.xxx:/lib/modules/2.6.15/*

   >/mnt/gentoo/lib/modules/2.6.15/

   [root@localhost]#umount /mnt/gentoo

   [root@localhost]#shutdown -h now

  3.现在开始调试

   [prime@localhost]$qemu -kernel

   >/linux-2.6.15/arch/i386/boot/bzImage -append root=/dev/hda2

   >-hda linux.img -s &

   [prime@localhost]$cd /linux-2.6.15/

   [prime@localhost]$gdb vmlinux

   (gdb)target remote localhost:1234


OK,现在可以用gdb调试内核了,enjoy it!


=====================================
本来在blog上的,没时间维护就关掉了,帖过来吧.

论坛徽章:
0
发表于 2006-06-19 18:19 |显示全部楼层
楼主工作了?
为什么关掉BLOG啊,仅仅是因为没时间维护?

论坛徽章:
0
发表于 2006-06-19 18:30 |显示全部楼层
哦 我也安装qemu看看。
port安装要装好多相关的东西啊
网速又慢....

论坛徽章:
0
发表于 2006-06-19 18:54 |显示全部楼层
原帖由 assiss 于 2006-6-19 18:19 发表
楼主工作了?
为什么关掉BLOG啊,仅仅是因为没时间维护?

马上就离校去工作了
BLOG确实是没时间维护了

论坛徽章:
0
发表于 2006-06-19 20:24 |显示全部楼层
原帖由 mingyanguo 于 2006-6-19 18:54 发表

马上就离校去工作了
BLOG确实是没时间维护了


哪儿有那么夸张?偶们都是边工作边维护。。。

论坛徽章:
2
亥猪
日期:2014-03-19 16:36:35午马
日期:2014-11-23 23:48:46
发表于 2006-06-19 20:50 |显示全部楼层
呵,我现在才感觉到,有时候力不从心啊。很多时间都不属于自己......

论坛徽章:
0
发表于 2006-06-19 21:21 |显示全部楼层
原帖由 雨丝风片 于 2006-6-19 20:24 发表


哪儿有那么夸张?偶们都是边工作边维护。。。

主要是不想在这些形式上的东西花时间,呵呵.而且,感觉现在也没什么东西可以写.有点时间出去玩玩,或者灌水,

论坛徽章:
0
发表于 2006-06-19 21:24 |显示全部楼层
原帖由 mingyanguo 于 2006-6-19 21:21 发表

有点时间出去玩玩


这个是最重要的,工作了,最缺的和最想念的就是这个。

论坛徽章:
0
发表于 2006-06-19 22:21 |显示全部楼层
原帖由 雨丝风片 于 2006-6-19 21:24 发表


这个是最重要的,工作了,最缺的和最想念的就是这个。

关键要有好玩伴

论坛徽章:
0
发表于 2006-06-20 09:04 |显示全部楼层
为什么我按照楼主的做法,到这一步确出了错:
[root@shyfzx /usr/src/sys]# mount /dev/md0s1a /mnt
mount: /dev/md0s1a: No such file or directory


操作系统是FreeBSD6.1
您需要登录后才可以回帖 登录 | 注册

本版积分规则

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP