单步运行linux kernel ?
如果能给linux kernel打log,如果能单步运行,如果能像普通应用程序那样,step by step的查看程序跑哪里了.. 该多好?这是一个梦想,但从未实现过:因为那是kernel,不是应用程序。kernel一闪而过,我有什么能力让它驻足停留,为自己看个够?虽然,也知道kernel是人写的(废话),但那是全世界顶尖级黑客的产物---他们怎么把kernel写出来,然后怎么debug,无从知道...
曾经有这样的猜想:这些人可能都是有两台机器在开发,一台机器编码,然后把新的kernel拿到另外一台上去运行,运行的过程产生log,最后cp出来,研究。这样想来,不经对他们更加敬佩..大神啊!终究就是大神!(真这样,这不但费时间,还费耐心-------岂是寻常人能干的?)
由于自己是某小板子的关注者,也可以说是学习者。最近自己想玩玩此小板子,但是没有入手。思来想去,记得在开始查看该小板子资料的时候,这个小板子的官方debian系统是可以跑在一个叫qemu的虚拟机上的。又突然模糊记得,该资料对qemu的简介中,有一句“可以对kernel打断点”的言语。呀!若能够对kernel打断点,那岂不是可以利用它来debug kernel了吗?!
于是网络千百度,一切就呈现在自己的面前: qemu + gdb + gdbserver 可以单步kernel ! 不但可以单步,而且寄存器什么的用命令完全可以查看!-----针对于kernel:运行到了哪里,都可以清清楚楚,明明白白!
又是千百度!终于在自己的ubuntu-14.04上弄好了qemu,弄好了kernel,然后启动起来,看着那信息从qemu屏幕上闪过,心里高兴!
然后使用gdb去调试,又遇到小问题---也不算小:准备放弃了!歇息了几个小时,中间看了某宝的一部电影,某人因武而痴,于是寻找天下高手,“一决高下,也决生死”。我若此,岂不是会放弃自己的生命?!不就是一个kernel调试方法吗?继续搞。
当然,这个问题不是我第一个遇到,所以,别人已经解决,并把解决的方法发在网上了---只是麻烦了些许。
最终完美收局:在gdb里面单步单步的运行kernel程序,然后看看代码走向如何,以及跑到了什么地方~ 体现了一把,千言万语一句话:不错!很高兴!
当然,此处由于心情高兴,就胡言乱语一篇,为自己的心情留个log 。而真正的方法,将在明天重新整理成一篇博客,共享到网络,以回报网络分享。
ps:
最近有两件事让我这个山里娃高兴:其一,公司某白妞,cannot speak Chinese, only speaking english。某日某人,壮着胆子,Chat to her in English in a few minuters, so surprise in my mind ! 其二:今日,kernel从此不再一飘而过,也可以为我稍作停留!也许,我可以试着关注下kernel maillist 上面的一些little bug : Yes, my email is to show on the kernel mailList ! happy ! happy ! happy !(^_^).
单步运行linux kernel ?的更多相关文章
- ubuntu: qemu+gdb 调试linux kernel 学习笔记
声明: 本笔记内容并非本人原创,90%来自网络资料的整合.同时,由于自己是刚刚接触qemu & gdbserver remote debug,本文也就算不得教程,仅供有缘人参考而已. ---- ...
- Linux Kernel 2.6.28 以上有BUG,系统运行第208.5天down机
简介: 业务服务器有一台服务器出现意外down机,服务器ping 不通.无法登陆,本想通过公司KVM系统登陆系统重启解决,登陆KVM后发现系统屏幕打印大量的内核错误,KVM无法使用.无法发送重启服务器 ...
- Linux Kernel - Debug Guide (Linux内核调试指南 )
http://blog.csdn.net/blizmax6/article/details/6747601 linux内核调试指南 一些前言 作者前言 知识从哪里来 为什么撰写本文档 为什么需要汇编级 ...
- Linux kernel make 常用选项介绍
Linux kernel 编译方法大全记录 一.这是一个我自己写的自动make脚本: #!/bin/sh export ARCH=arm export CROSS_COMPILE=arm-linux- ...
- Linux Kernel 代码艺术——编译时断言
本系列文章主要写我在阅读Linux内核过程中,关注的比较难以理解但又设计巧妙的代码片段(不关注OS的各个模块的设计思想,此部分我准备写在“深入理解Linux Kernel” 系列文章中),一来通过内核 ...
- Intel 80x86 Linux Kernel Interrupt(中断)、Interrupt Priority、Interrupt nesting、Prohibit Things Whthin CPU In The Interrupt Off State
目录 . 引言 . Linux 中断的概念 . 中断处理流程 . Linux 中断相关的源代码分析 . Linux 硬件中断 . Linux 软中断 . 中断优先级 . CPU在关中断状态下编程要注意 ...
- arm linux kernel 从入口到start_kernel 的代码分析
参考资料: <ARM体系结构与编程> <嵌入式Linux应用开发完全手册> Linux_Memory_Address_Mapping http://www.chinaunix. ...
- Linux Kernel Schduler History And Centos7.2's Kernel Resource Analysis
本文分为概述.历史.el7.2代码架构图解三部分. 解决的问题: a.Kernel调度发展过程: b.以架构图的方式,详解el7.2具体调度实现.内核线程模型.调度时间片计算,以及探究整个Kernel ...
- arm linux kernel启动之start_kernel
了解完kernel启动以前的汇编之后我们来看看正式的c语言启动代码,也就是我们的start_kernel函数了.start_kernel相当大,里面每一个调用到的函数都足够我们伤脑筋了,我这里只是浅尝 ...
随机推荐
- 查看MySQL的警告信息
在王MySQL数据库导入数据的时候经常会出现警告,这些警告很容易被忽视,今天到数据的时候突然想看看警告的内容是什么,百度了一下mysql查看警告的命令 show warnings; 命令很简明,一查看 ...
- MVC-READ5(asp.net web from PK asp.net MVC)
webform: ViewState问题 页面生命周期 不能很好的分解关注点 对HTML操控受限 抽象不完全 可测试性弱
- PHP校验ISBN码的函数
国际标准书号(International Standard Book Number,ISBN:拟发音is-ben),是国际通用的图书或独立的出版物(除定期出版的期刊)代码.出版社可以通过国际标准书号清 ...
- 【转】谈一谈PHP字串清除空格函数不安全
清除空格的方法是不安全的,部分原因是因为字符中的空格非常多,例如 "addslashes的问题在 于黑客 可以用0xbf27来代替单引号,而addslashes只是将0xbf27修改为0xb ...
- 使用java写入excel文件
要操作excle文件,首先要下载jxl.jar文件,我用的版本是2.6.下载地址:http://www.andykhan.com/jexcelapi/download.html. Java Excel ...
- open file 值修改
有时候在程序里面需要打开多个文件,进行分析,系统一般默认数量是1024,(用ulimit -a可以看到)对于正常使用是够了,但是对于程序来讲,就太少了. 修改办法: 重启就OK 修改2个文件. 1./ ...
- java类与对象的动手动脑和其他小问题
在Java中,我们可以通过组合一私有字段和一对get/set方法来定义一个属性.私有的变量,共有的方法. package sample; /** * 自定义Java类的示例 */ class MyCl ...
- 二叉树单色路径最长&&穿珠子
对树的操作,特别理解递归的好处. //对于一棵由黑白点组成的二叉树,我们需要找到其中最长的单色简单路径,其中简单路径的定义是从树上的某点开始沿树边走不重复的点到树上的 //另一点结束而形成的路径,而路 ...
- Ubuntu14.04下安装QQ 国际版
在/etc/apt/source.list文件中添加: deb http://packages.linuxdeepin.com/deepin trusty main non-free universe ...
- 基于gSOAP使用头文件的C语言版web service开发过程例子
基于gSOAP使用头文件的C语言版web service开发过程例子 一服务端 1 打开VS2005,创建一个工程,命名为calcServer. 2 添加一个头文件calc.h,编辑内容如下: 1// ...