qemu debug linux内核,qemu调试linux内核

2012.03.19

网上时间过早的讲编译内核的文章完全不用看,比如什么讲kgdb的,现在这个东西早就被集成到内核里了。还有调试内核的一些允许kernel

debugging的选项,在新版本中也早已是默认选中了。

简单地说,qemu相当于一个虚拟化的工具。

编译过linux内核有两个部分,第一个是vmlinux文件,100多MB的样子,包含源代码的符号映射表;还有一个是bzImage,是压缩过的内核,只有几MB。

qemu上运行的内容为:内核bzImage +

磁盘镜像xxx.img。磁盘镜像可以用busybox制作,但是也可以从qemu官网下载已经制作好的(左边一栏选testing

qemu,有个文件叫linux-0.2.img),大约8MB。

qemu加这两个东西,就变成了一个完整的Linux系统

切记用chmod命令修改内核和磁盘镜像文件的权限,否则可能导致qemu不能正常读取。为了简单我直接chmod 777

xxx了(所有用户所有权限)。

#qemu-system-i386 -S -kernel bzImage -hda linux-0.2.img -append

root=/dev/sda

这就把磁盘镜像和内核挂载到qemu上了。此时qemu出现黑屏,按ctrl+alt+2进入命令行终端模式。

在qemu命令行中输入gdbserver,发现开始监听tcp:1234端口。(1234是qemu默认设置)

新开一个终端,输入 #gdb vmlinux,开始读取大内核及符号映射。设置断点 #br start_kernel

接着开始远程传输指令 #target remote localhost:1234

输入#c (continue),开始继续执行,此时内核会自动执行到start_kernel()函数并暂停。

高版本的C函数库编译的程序放在linux-0.2.img中可能会报错,是由于该文件系统中的C库过老导致的。编译时采用静态编译即可解决这一问题

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值