Welcome 微信登录

首页 / 操作系统 / Linux / 使用QEMU调试Linux内核代码

Linux内核代码的调试非常麻烦,一般都是加printk, 或者用JTAG调试。这里的方法是用QEMU来调试Linux内核。因为QEMU自己实现了一个gdb server, 所以可以非常方便的使用gdb来调内核。这对内核的学习也非常有帮助。为了尽量不多花时间在QEMU设置上,这里直接使用以下的内核image:http://free-electrons.com/community/demos/qemu-arm-directfb/1.  QEMU的安装 这个可以自己去QEMU的官网下载编译,如果自己手头上的发行版有对应QEMU的包的话那也可以直接安装。 CentOS的话参考前面的 CentOS rpm 额外包的源2.  下载对应的内核映像 从以下网址下载:http://free-electrons.com/pub/qemu/demos/arm/directfb/1.0/ 这里面有一个vmlinuz-qemu-arm-2.6.203.  启动QEMU 使用如下命令启动: $ qemu-system-arm -M versatilepb -m 16 -kernel vmlinuz-qemu-arm-2.6.20 -append "clocksource=pit quiet rw" -S -s4.  调试内核 这里需要有一个包含调试信息的vmlinux文件,可以直接编译http://free-electrons.com/pub/qemu/demos/arm/directfb/1.0/src/linux-2.6.20.tar.7z如果自己不想编译的话可以使用一个已编译好的vmlinux文件:------------------------------------------分割线------------------------------------------FTP地址:ftp://ftp1.linuxidc.com用户名:ftp1.linuxidc.com密码:www.linuxidc.com在 2014年LinuxIDC.com8月使用QEMU调试Linux内核代码下载方法见 http://www.linuxidc.com/Linux/2013-10/91140.htm------------------------------------------分割线------------------------------------------ 然后执行如下命令: $ arm-none-linux-gnueabi-gdb vmlinux 在gdb的控制台输入: (gdb) target remote :1234 (gdb) b start_kernel (gdb) c 这时候程序执行就会落在你设定的断点start_kernel处。OK。这样你就可以随意调试内核代码了!Ubuntu 12.04之找不到Qemu命令 http://www.linuxidc.com/Linux/2012-11/73419.htmArch Linux上安装QEMU+EFI BIOS http://www.linuxidc.com/Linux/2013-02/79560.htmQEMU的翻译框架及调试工具 http://www.linuxidc.com/Linux/2012-09/71211.htmQEMU 的详细介绍:请点这里
QEMU 的下载地址:请点这里本文永久更新链接地址