关于 kernel-debugging-advanced
面向 Agent 的内核调试指南,使用跟踪和事后分析工具排查延迟与故障。内容包括 ftrace、trace-cmd、内核 perf、探针、kgdb 及 vmcore 分析,适用于生产环境调试流程。
主要功能
- 01ftrace 函数图跟踪
- 02使用 trace-cmd 记录和报告
- 03内核性能分析与 perf 探针
- 04使用 kprobes 动态检查
- 05kgdb 与 vmcore 分析
适用场景
- 01跟踪内核驱动延迟尖峰
- 02检查内核函数调用图
- 03无需重新编译检查内核运行状态
- 04分析内核崩溃后的 vmcore
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ mohitmishra786/ low-level-dev-skills --skill kernel-debugging-advanced安装后在 Claude Code 中输入/kernel-debugging-advanced确认已加载。
详细介绍
高级内核调试
目的
为 skills/kernel/kernel-debugging 增加生产级追踪能力:ftrace、trace-cmd、内核 perf、kprobes/kretprobes、kgdb、崩溃转储分析和 printk 使用规范。不与 kernel-debugging 合并——该技能涵盖基础的 kgdb/dyndbg;本技能侧重于 trace-cmd、function_graph,以及生产环境中的实时和事后工作流。
适用场景
- 内核驱动出现延迟峰值,但没有明显的错误
- 追踪内核中的函数调用图
- 无需重新编译即可实时检查(kprobes、bpf)
- panic 后进行事后
vmcore分析
工作流
1. ftrace 函数图
# Enable function graph tracer
echo function_graph > /sys/kernel/debug/tracing/current_tracer
echo my_driver_probe > /sys/kernel/debug/tracing/set_graph_function
echo 1 > /sys/kernel/debug/tracing/tracing_on
# reproduce issue
cat /sys/kernel/debug/tracing/trace
echo 0 > /sys/kernel/debug/tracing/tracing_on
需要启用 CONFIG_FUNCTION_GRAPH_TRACER 并挂载 debugfs。
2. trace-cmd record
trace-cmd record -p function_graph -F my_probe
trace-cmd report
trace-cmd stat
以可移植的方式捕获数据,便于与他人分享。
3. 内核上下文中的 perf
perf record -a -g -- sleep 10
perf report --stdio
perf probe --add my_driver:probe
用户空间相关内容请参阅 skills/profilers/linux-perf。
4. kprobes(动态)
#include <linux/kprobes.h>
static struct kprobe kp = {
.symbol_name = "do_sys_open",
.pre_handler = handler,
};
register_kprobe(&kp);
在生产环境中谨慎使用;条件允许时优先使用静态跟踪点。
5. dyndbg 和 printk 使用规范
echo 'module mydriver +p' > /sys/kernel/debug/dynamic_debug/control
echo 'file drivers/foo/*.c +p' > /sys/kernel/debug/dynamic_debug/control
pr_debug("state=%d\n", s); /* compile-time optional */
printk_ratelimited(KERN_WARNING "hw fault\n");
6. kgdb / kdb
# kernel cmdline: kgdboc=ttyS0,115200 kgdbwait
echo g > /proc/sysrq-trigger # break into debugger (when configured)
7. 崩溃转储(vmcore)
# after kdump capture
crash /usr/lib/debug/vmlinux vmcore
crash> bt
crash> dev -s
8. Agent 使用
/kernel-debugging-advanced Trace my_driver_ioctl latency with ftrace function_graph
常见问题
| 症状 | 原因 | 修复方法 |
|---|---|---|
| 跟踪内容为空 | 未启用跟踪器 | 使用 tracing_on;检查 current_tracer |
| ftrace 开销过高 | 对所有函数启用了图跟踪 | 使用 set_graph_function 进行筛选 |
| kprobe 失败 | 符号已内联 | 尝试相邻符号或静态键 |
| kgdb 无法连接 | kgdboc tty 错误 | 使其与串口/USB gadget 匹配 |
| crash 找不到符号 | 缺少 debuginfo | 安装 linux-image-dbg / vmlinux |
相关技能
skills/kernel/kernel-debugging— kgdb、dyndbg 基础skills/profilers/linux-perf— perf record/reportskills/observability/ebpf— BPF kprobe 替代方案skills/kernel-dev/writing-char-drivers— ioctl 跟踪目标skills/debuggers/core-dumps— 用户空间 core 的对应内容
评论
支持 Markdown