kernel-debugging-advanced — Claude Code skill for kernel tracing
A skill for Linux kernel tracing: ftrace, trace-cmd, perf, kprobes, kgdb and vmcore analysis. Useful when a driver stalls with no obvious bug.
npx skills add mohitmishra786/low-level-dev-skills --skill kernel-debugging-advanced -a claude-codeWhat kernel-debugging-advanced does
The skill walks the agent through eight kernel debugging workflows: function_graph tracing with ftrace, capture with trace-cmd, kernel perf profiling, dynamic kprobes, dyndbg and printk discipline, kgdb/kdb, and post-mortem vmcore analysis in crash.
ftrace needs CONFIG_FUNCTION_GRAPH_TRACER and a mounted debugfs, otherwise the trace comes back empty. kprobes are meant to be used sparingly in production, with static tracepoints preferred. Crash analysis fails without debuginfo — install linux-image-dbg or point crash at vmlinux.
It complements the baseline kernel-debugging skill rather than replacing it: that one covers kgdb and dyndbg, this one adds trace-cmd, function_graph and production workflows for live and post-mortem inspection. A troubleshooting table maps symptoms to causes: empty trace, ftrace overhead, a kprobe that fails on an inlined symbol, kgdb that will not connect.
What it helps with
- catch a latency spike in a driver with no clear bug
- build a kernel function call graph
- inspect a running system without recompiling
- analyze a vmcore after a panic
- turn on debug messages for a module at runtime
Example prompts for the agent
- /kernel-debugging-advanced Trace my_driver_ioctl latency with ftrace function_graph
- Help me capture a trace with trace-cmd record -p function_graph and read the report
- Walk through this vmcore in crash: show bt and dev -s
How to install kernel-debugging-advanced
1Skills CLI (Vercel)
npx skills add mohitmishra786/low-level-dev-skills --skill kernel-debugging-advanced -a claude-code2Manually: put the files in place
~/.claude/skills/kernel-debugging-advanced/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/kernel-debugging-advanced/
1Skills CLI (Vercel)
npx skills add mohitmishra786/low-level-dev-skills --skill kernel-debugging-advanced -a codex2Manually: put the files in place
.agents/skills/kernel-debugging-advanced/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add mohitmishra786/low-level-dev-skills --skill kernel-debugging-advanced -a cursor2Manually: put the files in place
.cursor/skills/kernel-debugging-advanced/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install mohitmishra786/low-level-dev-skills kernel-debugging-advanced2Manually: put the files in place
.github/skills/kernel-debugging-advanced/SKILL.md1Skills CLI (Vercel)
npx skills add mohitmishra786/low-level-dev-skills --skill kernel-debugging-advanced -a gemini-cli2Platform CLI
gemini skills install https://github.com/mohitmishra786/low-level-dev-skills --path skills/kernel-dev/kernel-debugging-advancedManually: put the files in place
.devin/skills/kernel-debugging-advanced/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add mohitmishra786/low-level-dev-skills --skill kernel-debugging-advanced -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about kernel-debugging-advanced
How do I install kernel-debugging-advanced in Claude?
Run npx skills add mohitmishra786/low-level-dev-skills --skill kernel-debugging-advanced -a claude-code. The skill lands in ~/.claude/skills/kernel-debugging-advanced/SKILL.md.
What does kernel-debugging-advanced do?
It lays out kernel debugging workflows: ftrace, trace-cmd, perf, kprobes, dyndbg, kgdb and crash dump analysis. The agent follows them when you ask about tracing kernel functions or reading a vmcore.
How is it different from kernel-debugging?
The baseline skill covers kgdb and dyndbg; this one adds trace-cmd, function_graph and production scenarios for live inspection and post-mortem analysis. The two are not merged.
Source text
SKILL.md · MIT
---
name: kernel-debugging-advanced
description: Advanced kernel debugging skill for ftrace, trace-cmd, perf, kprobes, kgdb, and crash analysis. Use when tracing kernel functions, profiling syscalls in kernel, dynamic instrumentation, or analyzing vmcore. Activates on queries about ftrace, trace-cmd, kprobe, kgdb, kernel crash dump, or dyndbg.
---
# Advanced Kernel Debugging
## Purpose
Extend `skills/kernel/kernel-debugging` with production-grade tracing: `ftrace`, `trace-cmd`, kernel `perf`, `kprobes`/`kretprobes`, `kgdb`, crash dump analysis, and `printk` discipline. **Not merged** with `kernel-debugging` — that skill covers baseline kgdb/dyndbg; this one focuses on trace-cmd, function_graph, and live/post-mortem production workflows.
## When to Use
- Latency spikes in kernel driver without obvious bug
- Tracing function call graph in kernel
- Live inspection without recompiling (kprobes, bpf)
- Post-mortem `vmcore` after panic
## Workflow
### 1. ftrace function graph
```bash
# 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
```
Requires `CONFIG_FUNCTION_GRAPH_TRACER` and debugfs mounted.
### 2. trace-cmd record
```bash
trace-cmd record -p function_graph -F my_probe
trace-cmd report
trace-cmd stat
```
Portable capture for sharing with others.
### 3. perf in kernel context
```bash
perf record -a -g -- sleep 10
perf report --stdio
perf probe --add my_driver:probe
```
See `skills/profilers/linux-perf` for userspace overlap.
### 4. kprobes (dynamic)
```c
#include <linux/kprobes.h>
static struct kprobe kp = {
.symbol_name = "do_sys_open",
.pre_handler = handler,
};
register_kprobe(&kp);
```
Use sparingly in production; prefer static tracepoints when available.
### 5. dyndbg and printk discipline
```bash
echo 'module mydriver +p' > /sys/kernel/debug/dynamic_debug/control
echo 'file drivers/foo/*.c +p' > /sys/kernel/debug/dynamic_debug/control
```
```c
pr_debug("state=%d\n", s); /* compile-time optional */
printk_ratelimited(KERN_WARNING "hw fault\n");
```
### 6. kgdb / kdb
```bash
# kernel cmdline: kgdboc=ttyS0,115200 kgdbwait
echo g > /proc/sysrq-trigger # break into debugger (when configured)
```
### 7. Crash dump (vmcore)
```bash
# after kdump capture
crash /usr/lib/debug/vmlinux vmcore
crash> bt
crash> dev -s
```
### 8. Agent usage
```
/kernel-debugging-advanced Trace my_driver_ioctl latency with ftrace function_graph
```
## Common Problems
| Symptom | Cause | Fix |
|---------|-------|-----|
| Empty trace | Tracer not enabled | `tracing_on`; check `current_tracer` |
| ftrace overhead | Graph all functions | Filter with `set_graph_function` |
| kprobe fail | Inlined symbol | Try nearby symbol or static key |
| kgdb no connect | Wrong `kgdboc` tty | Match serial/USB gadget |
| crash no symbols | Missing debuginfo | Install `linux-image-dbg` / vmlinux |
## Related Skills
- `skills/kernel/kernel-debugging` — baseline kgdb, dyndbg
- `skills/profilers/linux-perf` — perf record/report
- `skills/observability/ebpf` — BPF kprobe alternative
- `skills/kernel-dev/writing-char-drivers` — ioctl trace targets
- `skills/debuggers/core-dumps` — userspace core parallels
© mohitmishra786 · MIT · mohitmishra786/low-level-dev-skills