kernel-debugging-advanced について
トレースと事後解析ツールでカーネルの遅延や障害を調べるエージェント向けスキルです。ftrace、trace-cmd、カーネルperf、プローブ、kgdb、vmcore解析を扱います。
主な機能
- 01ftraceの関数グラフトレース
- 02trace-cmdによる記録とレポート
- 03カーネルのプロファイリングとperfプローブ
- 04kprobesによる動的な調査
- 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)
- パニック後の
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);
本番環境での使用は控えめにし、利用可能な場合は静的トレースポイントを優先してください。
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 のオーバーヘッド | すべての関数をグラフ化している | set_graph_function でフィルターします |
| kprobe の失敗 | シンボルがインライン化されている | 近くのシンボルまたは static key を試します |
| kgdb が接続できない | kgdboc の tty が間違っている | シリアル/USB ガジェットの設定を合わせます |
| 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— ユーザー空間のコアダンプに関する関連情報
コメント
Markdown 対応