首页 > 代码库 > Qemu+gdb跟踪内核源码
Qemu+gdb跟踪内核源码
1.编译安装Qemu
Qemu源码下载地址:http://wiki.qemu.org/Download
linux下可以直接用wget下载:
wget http://wiki.qemu.org/download/qemu-2.2.0.tar.bz
解压缩bz2文件:
tar -jxvf qemu-2.2.0.tar.bz
由于我只有模拟x86的需求,所以在编译之前先配置Qemu:
cd qemu-2.2.2./configure --atrget-list=i386-softmmumakemake install
编译安装完之后,可以从http://wiki.qemu.org/Testing下载一个镜像测试一下,我这里下载linux-0.2.img.bz2解压之后用qemu运行:
qemu-system-i386 -hda linux-0.2.img
到这里Qemu就编译安装好了。
2.编译Linux Kernel
kernel下载地址:https://www.kernel.org/pub/linux/kernel/
直接用wget下载最新的3.18.5
wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.18.5.tar.bz2
解压缩bz2文件:
zx -d linux-3.18.5.tar.bz2tar xvf linux-3.18.5.tar
编译内核生成bzImage文件,由于我需要用gdb调试内核,所以这里配置时需要打开debug info
make menuconfig
在kernel hacking中选择compile the kernel with debug info
make bzImage
这里内核没有做裁剪,编译时间很长,后续调试可以参考http://www.jinbuguo.com/kernel/longterm-3_10-options.html进行裁剪编译。
3.用Qemu+gdb调试内核
首先将编译出的bzImage和之前下载的linux-0.2.img放在一个目录,然后启动Qemu:
qemu-system-i386 -S -kernel bzImage -hda linux-0.2.img -append "root=/dev/hda" -monitor stdio
-monitor stdio的意思是将qemu的控制台转移到终端内
在qemu命令行下启动gdbserver
gdbserver tcp::1234
在编译内核的源码根目录下启动gdb
gdb vmlinux
在gdb命令行下执行远程调试命令,给内核start_kernel打个断点,就可以进入start_kernel函数了
target remote localhost:1234
b start_kernel
continue
Qemu+gdb跟踪内核源码
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。