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.
./configure --atrget-list=i386-softmmu
make
make 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..tar.bz2
tar xvf linux-3.18..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::

在编译内核的源码根目录下启动gdb

gdb vmlinux

在gdb命令行下执行远程调试命令,给内核start_kernel打个断点,就可以进入start_kernel函数了

target remote localhost:1234
b start_kernel
continue

Qemu+gdb跟踪内核源码的更多相关文章

  1. ubuntu下linux内核源码阅读工具和调试方法总结

    http://blog.chinaunix.net/uid-20940095-id-66148.html 一 linux内核源码阅读工具 windows下当然首选source insight, 但是l ...

  2. v87.01 鸿蒙内核源码分析 (内核启动篇) | 从汇编到 main () | 百篇博客分析 OpenHarmony 源码

    本篇关键词:内核重定位.MMU.SVC栈.热启动.内核映射表 内核汇编相关篇为: v74.01 鸿蒙内核源码分析(编码方式) | 机器指令是如何编码的 v75.03 鸿蒙内核源码分析(汇编基础) | ...

  3. Linux+eclipse+gdb调试postgresql源码

    pg内核源码解析课上用的vs调试pg源码, VS用起来确实方便,但是配置调试环境着实有点麻烦.首先得装个windows系统,最好是xp,win7稍微麻烦点:最好使用vs05,08和10也可以,但是比0 ...

  4. Linux内核源码分析--内核启动之(3)Image内核启动(C语言部分)(Linux-3.0 ARMv7)

    http://blog.chinaunix.net/uid-20543672-id-3157283.html Linux内核源码分析--内核启动之(3)Image内核启动(C语言部分)(Linux-3 ...

  5. Linux内核源码分析--内核启动之(4)Image内核启动(setup_arch函数)(Linux-3.0 ARMv7)【转】

    原文地址:Linux内核源码分析--内核启动之(4)Image内核启动(setup_arch函数)(Linux-3.0 ARMv7) 作者:tekkamanninja 转自:http://blog.c ...

  6. 《Unix内核源码剖析》

    <Unix内核源码剖析> 基本信息 作者: (日)青柳隆宏 译者: 殷中翔 丛书名: 图灵程序设计丛书 出版社:人民邮电出版社 ISBN:9787115345219 上架时间:2014-2 ...

  7. 鸿蒙内核源码分析(文件句柄篇) | 深挖应用操作文件的细节 | 百篇博客分析OpenHarmony源码 | v69.01

    百篇博客系列篇.本篇为: v69.xx 鸿蒙内核源码分析(文件句柄篇) | 深挖应用操作文件的细节 | 51.c.h.o 文件系统相关篇为: v62.xx 鸿蒙内核源码分析(文件概念篇) | 为什么说 ...

  8. 鸿蒙内核源码分析(根文件系统) | 先挂到`/`上的文件系统 | 百篇博客分析OpenHarmony源码 | v66.01

    百篇博客系列篇.本篇为: v66.xx 鸿蒙内核源码分析(根文件系统) | 先挂到/上的文件系统 | 51.c.h.o 文件系统相关篇为: v62.xx 鸿蒙内核源码分析(文件概念篇) | 为什么说一 ...

  9. 鸿蒙内核源码分析(构建工具篇) | 顺瓜摸藤调试鸿蒙构建过程 | 百篇博客分析OpenHarmony源码 | v59.01

    百篇博客系列篇.本篇为: v59.xx 鸿蒙内核源码分析(构建工具篇) | 顺瓜摸藤调试鸿蒙构建过程 | 51.c.h.o 编译构建相关篇为: v50.xx 鸿蒙内核源码分析(编译环境篇) | 编译鸿 ...

随机推荐

  1. 为设计师准备的 20 个新的免费 PSD 模板

    设计师们每天的工作经常要用到各种模板,本文推荐 20 个新的免费 PSD 模板,可节省设计时间. Blueprint Notice PSD Wooden Drawer Icon Minimal Clo ...

  2. 笔记13:File 类的一些操作

    一.对文件的创建(create) private void button1_Click(object sender, EventArgs e) { File.Create(@"F:\\QQP ...

  3. think in java 读书笔记 2 —— 套接字

    目录 think in java 读书笔记 1 ——移位 think in java 读书笔记 2 —— 套接字 think in java 读书笔记 3 —— 数据报 概要 1. 套接字基本知识 2 ...

  4. Spring Web Flow 简介

    Spring Web Flow 简介 博客分类: 转载 SSH 最近在TSS上看到了一片介绍Spring Web Flow的文章,顺便就翻译了下来,SWF的正式版估计要到6月份才能看到了,目前的例子都 ...

  5. 5月11日 ArrayList集合复习、特殊集合、枚举类型

    一.ArrayList集合复习 //定义 ArrayList al = new ArrayList(); //添加元素 al.Add(); //插入元素 al.Insert(,); //查看个数 in ...

  6. cisco nat

    1.配置端口: int s0/0 ip nat outside                  ;s0/0为外部端口 int f0/0 ip nat inside                   ...

  7. mongodb的监控与性能优化

    一.mongodb的监控 mongodb可以通过profile来监控数据,进行优化. 查看当前是否开启profile功能用命令 db.getProfilingLevel()  返回level等级,值为 ...

  8. Java:一个简单的Java应用程序

    /** * 这是文档注释 * @version  * @author  */ /* 这之间的内容也是注释 */ //这是行注释 public class FirstSample { public st ...

  9. 修改linux 文件权限命令 chmod

    [转载自:http://www.cnblogs.com/avril/archive/2010/03/23/1692809.html] Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以 ...

  10. linux 下crontabs使用

    安装crontab:[root@CentOS ~]# yum install vixie-cron[root@CentOS ~]# yum install crontabs说明:vixie-cron软 ...