• linux内核追踪(trace)(QEMU+gdb)


    1、引言

       Linux内核是一个很大的模块,如果只是看源码有时会难以理解Linux内核的一些代码设计情况,如果可以结合Linux内核运行同时阅读源码再好不过,本文大致介绍Linux内核追踪方式,采用工具为qemu模拟器和gdb工具完成。

    2、先决条件

     (1)工具:需要使用qemu模拟器和gdb,在默认的Linux发行版中基本都有gdb工具;而对于qemu模拟器则需要自己下载安装,可以使用qemu源码安装,比较麻烦,不建议使用,可以使用Linux发行版中的包管理器进行下载安装,对于ubuntu和debian使用apt-get install命令,而对于centos和federa使用yum包管理器安装;在ubuntu下安装qemu模拟器,对应的包的名字可以在http://packages.ubuntu.com/搜索

     (2)Linux内核源码:为了追踪Linux内核,你需要自己编译一个新的Linux内核,Linux内核下载网站https://www.kernel.org/,内核的具体编译方式在Linux内核源码压缩包中README文件有介绍

     (3)镜像文件:下载一个ubuntu的iso文件(或者其它Linux发行版的iso文件),使用qemu创建一个ubuntu镜像,创建过程为

           a)qemu-img create -f qcow2 ubuntu.img 10G (详细各个参数的含义见qemu-img的手册)

           b)qemu-i386 -hda ubuntu.img -cdrom ~/Documents/ubuntu-14.10-desktop-i386.iso

    3、启动qemu追踪内核

      (1)启动qemu模拟器:qemu-system-i386 -kernel linux-build/arch/i386/boot/bzImage -hda ubuntu.img -append "root=/dev/sda1" -S

      (2)启动gdbserver:切换到qemu模拟器,alt+ctrl+2, 启动gdbserver,侦听端口1234(gdbserver tcp::1234)

      (3)启动gdb:gdb ./vmlinux ,然后在gdb命令条件下链接上gdbserver, target remote localhost:1234

    4、开始追踪内核

       使用gdb的基本常用命令,step, break等(其他具体的命令可以参考gdb手册)。这时你可以查看系统运行的一些内核参数及系统状态信息,结合源码,查看系统的运行状态

       

         

  • 相关阅读:
    ExplorerControls的显示问题
    VS选项中没有C#相关设置选项?
    根据点提取栅格值
    原来我的代码暴露在外面!
    .NET反编译之manager,base.AutoScaleMode修复
    无法加载Dll”ArcGISVersion.dll”:0x8007007E
    ArcEngine9.3迁移至ArcObject10.1
    地籍宗地出图(二)
    地籍宗地出图(一)
    CAD设置图层透明显示
  • 原文地址:https://www.cnblogs.com/linghuchong0605/p/4942120.html
Copyright © 2020-2023  润新知