01
内核调试概述
为什么需要内核调试 · 常见内核问题分类 · 调试工具链全景图
入门概念
02
编译环境搭建
交叉编译工具链安装 · 内核源码获取与配置 · 编译选项与调试符号
环境工具链
03
QEMU虚拟机调试环境
QEMU安装与配置 · 内核与根文件系统制作 · GDB远程调试连接
虚拟化GDB
04
KGDB双机调试
KGDB内核配置 · 串口/网络连接设置 · 调试会话建立与断点管理
双机断点
05
KDB内核内置调试器
KDB启用与进入 · 常用命令(bt, ps, dmesg) · 内存与寄存器查看
内置命令行
06
printk日志系统
printk级别与输出控制 · 日志缓冲区管理 · 动态调试(dynamic debug)
日志printk
07
tracepoint与ftrace
tracepoint机制 · ftrace基础使用 · 函数跟踪与延迟分析
跟踪ftrace
08
perf性能分析工具
perf安装与事件类型 · 采样与计数模式 · 热点函数定位
性能perf
09
eBPF基础入门
eBPF架构与工作原理 · bcc工具集安装 · 简单eBPF程序编写
eBPFbcc
10
eBPF高级调试
kprobe与tracepoint绑定 · eBPF map数据共享 · 性能开销分析
高级kprobe
11
SystemTap动态跟踪
SystemTap安装与脚本语法 · 探针定义与变量访问 · 实战案例
动态脚本
12
crash工具与vmcore分析
kdump配置与触发 · crash工具安装 · 常用crash命令(bt, log, files)
crashvmcore
13
内存调试
kmemleak内存泄漏检测 · slab分配器调试 · KASAN地址消毒器
内存KASAN
14
锁调试与死锁检测
lockdep锁依赖验证 · spinlock/mutex调试 · 死锁复现与定位
锁lockdep
15
RCU调试
RCU机制回顾 · RCU stall检测 · rcu_torture测试框架
RCUstall
16
中断与软中断调试
中断上下文问题 · irqsoff延迟跟踪 · softirq统计与优化
中断irqsoff
17
调度器调试
调度类与策略 · sched_stat与延迟统计 · CFS调试接口
调度CFS
18
文件系统调试
VFS层调试 · ext4/btrfs调试选项 · I/O栈延迟分析
文件系统I/O
19
网络协议栈调试
网络子系统架构 · netfilter钩子调试 · sk_buff跟踪
网络netfilter
20
设备驱动调试
驱动probe/remove流程 · DMA调试 · IOMMU问题排查
驱动DMA
21
USB子系统调试
USB设备枚举跟踪 · urb调试 · xhci问题定位
USBxhci
22
PCIe调试
PCIe配置空间访问 · 链路训练问题 · AER错误处理
PCIeAER
23
电源管理调试
suspend/resume流程跟踪 · cpuidle/cpufreq调试 · wakeup source分析
电源suspend
24
实时性调试
PREEMPT_RT补丁 · 抢占延迟测量 · cyclictest工具使用
实时PREEMPT_RT
25
内核崩溃分析
Oops信息解读 · panic处理流程 · kexec/kdump联动
崩溃Oops
26
调试信息收集
sysfs/debugfs接口 · trace-cmd与kernelshark · 自动化脚本编写
收集trace-cmd
27
容器与虚拟化调试
docker容器内核问题 · KVM虚拟机调试 · cgroup资源限制排查
容器KVM
28
性能瓶颈定位
CPU绑定与中断亲和性 · 内存带宽与NUMA · I/O调度器调优
性能NUMA
29
安全调试
SELinux/AppArmor策略调试 · 内核模块签名验证 · 地址随机化(KASLR)问题
安全SELinux
30
综合实战
从零调试一个内核模块崩溃 · 多工具联合使用 · 调试报告撰写与复盘
实战综合