使用QEMU调试Linux内核代码
2016-06-06 13:17
537 查看
http://blog.chinaunix.net/uid-20729583-id-1884617.html
http://www.linuxidc.com/Linux/2014-08/105510.htm
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.20
3. 启动QEMU
使用如下命令启动:
$ qemu-system-arm -M versatilepb -m 16 -kernel vmlinuz-qemu-arm-2.6.20 -append "clocksource=pit quiet rw" -S -s
4. 调试内核
这里需要有一个包含调试信息的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.com\8月\使用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.htm
Arch Linux上安装QEMU+EFI BIOS http://www.linuxidc.com/Linux/2013-02/79560.htm
QEMU的翻译框架及调试工具 http://www.linuxidc.com/Linux/2012-09/71211.htm
QEMU 的详细介绍:请点这里
QEMU 的下载地址:请点这里
本文永久更新链接地址:http://www.linuxidc.com/Linux/2014-08/105510tm
http://www.linuxidc.com/Linux/2014-08/105510.htm
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.20
3. 启动QEMU
使用如下命令启动:
$ qemu-system-arm -M versatilepb -m 16 -kernel vmlinuz-qemu-arm-2.6.20 -append "clocksource=pit quiet rw" -S -s
4. 调试内核
这里需要有一个包含调试信息的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.com\8月\使用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.htm
Arch Linux上安装QEMU+EFI BIOS http://www.linuxidc.com/Linux/2013-02/79560.htm
QEMU的翻译框架及调试工具 http://www.linuxidc.com/Linux/2012-09/71211.htm
QEMU 的详细介绍:请点这里
QEMU 的下载地址:请点这里
本文永久更新链接地址:http://www.linuxidc.com/Linux/2014-08/105510tm
相关文章推荐
- 每天一个linux命令(17):whereis 命令
- linux内核分析系列--百度
- Linux模式设计系列( 内核与应用关联思考)
- SELinux入门
- 每日一linux命令(9)-------touch
- Linux内核源代码情景分析系列
- linux基本命令(59)——rcp命令
- linux基本命令(58)——telnet命令
- Linux内核学习和研究及嵌入式(ARM)学习和研究的开放文档
- 强悍的 Linux —— GCC 常用命令
- 《Linux内核修炼之道》 系列
- 和菜鸟一起学linux内核源码之基础准备篇 系列 体系结构图
- 北航面试之操作系统之Linux常用命令
- arm-linux-androideabi-g++.exe: error: CreateProcess: No such file or directory
- Linux免密码登录
- linux-0.11内核 调试教程+GCC源代码
- Linux下vim上编辑实现进度条
- Linux下vim上编辑实现进度条
- 使用Linux命令行测试网速
- linux一些常用命令