采用大杀招QEMU调试Linux内核代码

时间:2022-10-01 17:14:07

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文件:http://pan.baidu.com/s/1sjuJYc1

 然后运行例如以下命令:

 $ arm-none-linux-gnueabi-gdb vmlinux

 在gdb在控制台输入:

 (gdb) target remote :1234

 (gdb) b start_kernel

 (gdb) c

 这一次,程序运行它会落在你设置断点start_kernel办公室。OK。所以,你可以调试内核任意代码!

采用大杀招QEMU调试Linux内核代码的更多相关文章

  1. 使用QEMU调试Linux内核代码

    http://blog.chinaunix.net/uid-20729583-id-1884617.html http://www.linuxidc.com/Linux/2014-08/105510. ...

  2. ubuntu14使用qemu调试linux内核

    # 下载内核源代码编译内核 cd ~/LinuxKernel/ wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.18.6.tar.x ...

  3. 在qemu环境中用gdb调试Linux内核

    简介 对用户态进程,利用gdb调试代码是很方便的手段.而对于内核态的问题,可以利用crash等工具基于coredump文件进行调试.其实我们也可以利用一些手段对Linux内核代码进行gdb调试,qem ...

  4. 用qemu+gdb tcp server+CDT调试linux内核启动-起步

    用qemu+gdb tcp server+CDT调试linux内核启动-起步 说明: 环境信息与 用virtualbox+模拟串口+CDT调试linux内核 TCP IP协议栈-起步 提到的一样,并且 ...

  5. Gdb远程调试Linux内核遇到的Bug

    知识共享许可协议本作品采用知识共享署名 4.0 国际许可协议进行许可.转载保留声明头部与原文链接https://luzeshu.com/blog/gdb-bug 本博客同步在http://www.cn ...

  6. 学习构建调试Linux内核网络代码的环境MenuOS系统

    构建调试Linux内核网络代码的环境MenuOS系统 一.前言 这是网络程序设计的第三次实验,主要是学习自己编译linux内核,构建一个具有简易功能的操作系统,同时在系统上面进行调试linux内核网络 ...

  7. 【转】TI-Davinci开发系列之六CCS5.2调试Linux内核

    上转博文<TI-Davinci开发系列之五CCS5.2使用gdbserver远程调试应用程序> 使用CCS5.2远程调试内核时,只需导入Linux内核源码,而不需要编译内核,也就不会用到交 ...

  8. 使用 ftrace 调试 Linux 内核【转】

    转自:http://blog.csdn.net/adaptiver/article/details/7930646 使用 ftrace 调试 Linux 内核,第 1 部分 http://blog.c ...

  9. VELT-0&period;1&period;5开发:使用kgdb调试Linux内核【转】

    转自:http://demo.netfoucs.com/lights_joy/article/details/44106589 VELT的全称是Visual EmbedLinuxTools,它是一个与 ...

随机推荐

  1. App解读

    一直不懂别人口中说的原生开发.混合式开发.今天突然看了一篇文章讲解的是什么叫做原生App?移动 Web App?混合APP?分享给大家. 原生App是专门针对某一类移动设备而生的,它们都是直接安装到设 ...

  2. 如何利用cookie来保存用户登录账号

    众所周知,cookie在网页编写中不接或缺,今天就谈谈如何利用cookie技术来保存用户登录账号 1.首先是否保存用户登录账号当然是用户自行决定,所以我们需要在用户登录界面设置一个复选框,以此取得用户 ...

  3. Python 以指定概率获取元素

    这是Python cookbook的示例 1 def random_pick(some_list,probabilities): 2 x=random.uniform(0,1) 3 cumulativ ...

  4. shell排序算法

    今天看<The C Programming Language>的时候看到了shell排序算法, /* shellsort: sort v[0]...v[n-1] into increasi ...

  5. 教程:关于如何通过Maven仓库安装Spire系列的 Java产品

    Spire系列库中已发布的Java产品目前有三个,即Spire.PDF for Java.Spire.Presentation for Java.Spire.Barcode for Java.使用该J ...

  6. &period;NET面试题系列(五)数据结构&lpar;Array、List、Queue、Stack&rpar;及线程安全问题

    常用数据结构的时间复杂度 如何选择数据结构 Array (T[]) 当元素的数量是固定的,并且需要使用下标时. Linked list (LinkedList<T>) 当元素需要能够在列表 ...

  7. Linux文件压缩、打包、备份

    1:Linux常见的压缩文件 2:gzip压缩指令 3:bzip2压缩指令(比gzip更高压缩比) 同理,可以用bzcat\bzmore\bzless读取被压缩后文件内容. 4:xz压缩指令(比bzi ...

  8. yarn 的安装

    yarn的安装方法: https://yarn.bootcss.com/docs/install.html#linux-tab

  9. 控制span的width属性及display属性值的选择

    给span设置width样式,会发现并没有改变它的宽度,但有时候我们需要给它设置固定的宽度,那么就可以设置它的display样式,改变span的显示模式就好了. span默认显示模式是inline,无 ...

  10. 20145321 《Java程序设计》第一周学习总结

    20145321 <Java程序设计>第1周学习总结 教材学习内容总结 第一章 1.三大平台:Java SE.Java EE .Java ME 2.Java SE:由JVM.JRE.JDK ...