单步运行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相当大,里面每一个调用到的函数都足够我们伤脑筋了,我这里只是浅尝 ...
随机推荐
- 使用 foreach 操作数组
foreach 并不是 Java 中的关键字,是 for 语句的特殊简化版本,在遍历数组.集合时, foreach 更简单便捷.从英文字面意思理解 foreach 也就是“ for 每一个”的意思,那 ...
- 白盒测试之初识gtest工具
因为公司最近对软件产品质量提高了要求,之前项目组中黑盒测试方法就越来越无法满足公司的要求.虽然作为研发,但是也要求对白盒测试有一个系统的了解(毕竟之前没有系统的接触过白盒测试). 单元测试工具有很多种 ...
- oracle导入导出数据库和创建表空间和用户
直入主题: 首先在本地创建2个文件,D:\oradata\jgszz\temp.dbf和 D:\oradata\jgszz\data.dbf. 然后执行下面的SQL. /*创建临时表空间 */ cre ...
- Tex使用
表格标题改变成中文的"表": \renewcommand{\tablename}{表} 同样图片的Figure改为中文的“图”: \renewcommand{\figurename ...
- Markdown使用记录
1,打开Markdown文件夹(已经解压好了) 2,运行markdownPad2.exe. 3,然后工具-选项-程序语言 改为中文. 4,帮助-Markdown激活. 5,打开激活工具,KG_tt7z ...
- 【工作备忘】suricata
因为工作遇到的困难,我向suricata的某个作者发送了邮件. On Wed, Sep 11, 2013 at 8:22 AM, likeyi <929812468@qq.com> wro ...
- 25个CSS3 渐变和动画效果教程
随着最新版CSS3渐变和动画功能发布,Web开发者在开发的过程中有了更多的选择.实际上,已经有了一些替代的技术,目的都是使网站的建设变得简易,高效和快速.不过CSS3所提供的渐变功能有着显著的优点,特 ...
- 使用Ambari部署hadoop集群
准备工作 1. 设置sudo免密码登陆 由于CentOS安装之后,普通用户无sudo权限,故应该设置sudo权限. 参考文章:http://www.cnblogs.com/maybob/p/32988 ...
- error while loading shared libraries: lib******: cannot open shared object file: No such file or directory
程序编译成功后,运行时错误: error while loading shared libraries: libevent-2.0.so.5: cannot open shared object fi ...
- pku3277 City Horizon
http://poj.org/problem?id=3277 线段树,离散化,成段更新 #include <stdio.h> #include <stdlib.h> #defi ...