http://blog.youkuaiyun.com/djinglan/article/details/7850031#
目录(?)[-]
linux内核调试指南
大海里的鱼有很多而我们需要的是鱼钩一只
一些前言
作者前言
知识从哪里来
为什么撰写本文档
为什么需要汇编级调试
第一部分基础知识
总纲内核世界的陷阱
源码阅读的陷阱
代码调试的陷阱
原理理解的陷阱
建立调试环境
发行版的选择和安装
为什么选debian
debian与ubuntu
从0安装debian
debian重要命令
中文环境设置
debian的键盘设置更改
英文Locale下使用中文输入法
pdf乱码的解决
建立编译环境
安装交叉编译工具
交叉编译工具下载网址
安装arm-linux-gnueabi-XXX 工具集
什么是EABI
安装arm-elf-XXX 工具集
bin工具集的使用
arm-linux-gnueabi-gcc
arm-linux-gnueabi-gdb
qemu的使用
initrdimg的原理与制作
安装与使用
x86虚拟调试环境的建立
基于qemu和内核内置kgdb
基于qemu和qemu内置gdbstub
arm虚拟调试环境的建立
利用qemu
利用qemu安装debian linux
利用qemu安装能进行内核调试的系统
利用skyeye
skyeye虚拟机的内核调试
skyeye的安装与使用
快速试玩
快速配置能调试的环境
为s3c2410配置2626内核
使用最新的skyeye
arm开发板调试环境的建立
基于串口
基于网口
gdb基础
基本命令
gdb之gui
gdb技巧
gdb宏
参考资料
gdb宏的使用
实例
链表遍历类
功能增强类
汇编基础--X86篇
用户手册
ATT汇编格式
内联汇编
汇编与C函数的相互调用
调用链形成和参数传递
寄存器的角色与保护
调用链的形成
栈帧结构与参数传递
完整的调用过程
调用链回溯的代码实现
C难点的汇编解释
例1
例2
例3
例14
优化级别的影响
优化选项
例子
汇编基础--ARM篇
用户手册
调用链形成和参数传递
壮观的标准
别名的烦恼
寄存器的角色与保护
条件执行
调用链的形成
栈帧结构与参数传递
完整的调用过程
调用链回溯的实现
源码浏览工具
调用图生成工具
find grep
wine SI
优缺点
安装wine
安装SI
SI的使用
global
Source-Navigator
vim cscopectags
优缺点
安装cscopectags
命令选项
使用
建立索引
利用vim浏览源码
快捷键的使用
kscope
lxr
SI等与gdb的特点
调用链调用树和调用图
理想调用链
函数指针调用
调用链的层次
非理想调用链
调用树与调用图
调用树的定义
调用树的作用
调用树的分类
调用树的显示
调用树的拼接
调用图
穿越盲区
穿越gdb的盲区
进程切换
中断异常
系统调用
穿越交叉索引工具的盲区
函数指针
查看函数的参数
工程方法
二叉断点
给调用指令下断点
绕过时钟中断的干扰
bug 与 OOPS
网站
第二部分内核分析
调试相关子系统
kgdb源码分析
sysrq
oprofile
kprobes
驱动分析
载入模块符号
seq_filec的分析
modulec的分析
中断处理过程
s3c24xx内存初始化分析
虚拟地址
djinglan的专栏