使用QEMU调试Linux内核代码

news/2024/7/6 13:11:59

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

使用QEMU调试Linux内核代码

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.niftyadmin.cn/n/2422875.html

相关文章

MongoCola使用教程 2 - MongoDB的Replset 初始化和配置

前言 首先再次感谢博客园的各位朋友。正是你们的关注才让我有信心将这个工具开发下去。 这周同样也有热心网友对于MongoCola存在的问题给予了反馈。 这次工具更新到了版本1.20,强化的地方是增加了Replset和Sharding的管理能力。MongoVUE和Mongocola以前在显示一个R…

Oracle RMAN 的 show,list,crosscheck,delete命令整理

1、SHOW命令:显示rman配置: RMAN> show all;2、REPORT命令:2.1、RMAN> report schema 报告目标数据库的物理结构;2.2、RMAN> report need backup days3/days 3; 报告最近3天没有被备份的数据文件;2.3、RMAN> report n…

python turtle画笑脸_如何用python画笑脸QQ表情——turtle库实践

from turtle import *screensize(600,600)speed(10)#笑脸的小圆脸pensize(5)color(dim grey,yellow)pu()goto(0,-100)begin_fill()circle(100)end_fill()#腮红#左侧seth(90)color(Light Pink,Light Pink)pu()goto(-55,-5)pd()begin_fill()circle(20)end_fill()#右侧color(Light…

maven项目迁入内网的各个坑

前言:我之前做的一个项目一直是在内网环境,进行开发的时候是在外网开发好了后打包传入内网。有许多的不便 因此我整个项目迁入内网才内网开发,琢磨了好一会才找到各个问题的解决方案。最近公司新进了一个新同事 然后让我带带,这就…

npm 模块安装机制简介

npm 是 Node 的模块管理器,功能极其强大。它是 Node 获得成功的重要原因之一。 正因为有了npm,我们只要一行命令,就能安装别人写好的模块 。 $ npm install 本文介绍 npm 模块安装机制的细节,以及如何解决安装速度慢的问题。 一、…

python在linux中的应用_Linux中为Python应用安装uwsgi

一般直接用pip install uwsgi可能会出错,所以在这之前先安装其他必要的引用库yum groupinstall "Development tools"yum install zlib-devel bzip2-devel pcre-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-develyum install pytho…

SSL3_GET_SERVER_CERTIFICATE 错误解决办法

requests模块之前一直正常的,某一天开始对https的请求都抛错误了:requests.exceptions.SSLError: [Errno 1] _ssl.c:504: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed完整的: /usr/local/lib/python…

SAP HUM HUPAST 界面里的Packing Station何处定义?

SAP HUM HUPAST 界面里的Packing Station何处定义? Tcode: HUPAST. Packing Station 选项的清单何处被定义的? 如下地方定义的: 具体定义界面如下: 2016-06-08 写于武汉市