mcpField
K
kernel-debugging-advanced

kernel-debugging-advanced

github.com/mohitmishra786开发269330 次安装18 周前更新
代码仓库

关于 kernel-debugging-advanced

面向 Agent 的内核调试指南,使用跟踪和事后分析工具排查延迟与故障。内容包括 ftrace、trace-cmd、内核 perf、探针、kgdb 及 vmcore 分析,适用于生产环境调试流程。

主要功能

  1. 01ftrace 函数图跟踪
  2. 02使用 trace-cmd 记录和报告
  3. 03内核性能分析与 perf 探针
  4. 04使用 kprobes 动态检查
  5. 05kgdb 与 vmcore 分析

适用场景

  1. 01跟踪内核驱动延迟尖峰
  2. 02检查内核函数调用图
  3. 03无需重新编译检查内核运行状态
  4. 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/report
  • skills/observability/ebpf — BPF kprobe 替代方案
  • skills/kernel-dev/writing-char-drivers — ioctl 跟踪目标
  • skills/debuggers/core-dumps — 用户空间 core 的对应内容

评论

支持 Markdown