SuperAPI AI 工具集

kernel-debugging-advanced

部署与运维

查看项目

更新于 10-15 15:12

技能介绍

用途

本技能用于扩展基础内核调试能力,提供生产级追踪手段,覆盖 ftrace、trace-cmd、kernel perf、kprobes/kretprobes、kgdb、崩溃转储分析以及 printk 使用规范。它与基础内核调试技能并不合并:基础技能覆盖 kgdb/dyndbg 的基线用法,而本技能聚焦于 trace-cmd、function_graph 以及在线与事后生产工作流。

适用时机:

  • 内核驱动出现延迟尖峰但没有明显 bug
  • 需要追踪内核中的函数调用图
  • 在不重新编译的情况下进行在线检查(kprobes、bpf)
  • panic 之后对 vmcore 进行事后分析

主要能力与工作流

1. ftrace function graph

# 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);

在生产环境应谨慎使用;若有静态 tracepoint 可用,优先采用静态 tracepoint。

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. 智能体用法

/kernel-debugging-advanced Trace my_driver_ioctl latency with ftrace function_graph

常见问题

现象 原因 修复
追踪为空 追踪器未启用 确认 tracing_on 与 current_tracer
ftrace 开销大 对所有函数做 graph 用 set_graph_function 过滤
kprobe 失败 符号被内联 尝试附近符号或静态 key
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 dump 对应内容

限制

除资料中给出的命令行示例、代码片段与依赖说明外,其他配置细节、平台支持范围与效果数据暂未提供。