zoukankan      html  css  js  c++  java
  • 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-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.5.tar.bz2
    tar 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

  • 相关阅读:
    ftp服务器架设
    samba服务器架设
    apache安装
    yum及prm安装
    redis安装与使用
    memcached安装与使用
    mysql主从服务器
    nginx负载均衡服务器搭建
    lnmp环境搭建
    linux笔记
  • 原文地址:https://www.cnblogs.com/elvalad/p/4265178.html
Copyright © 2011-2022 走看看