mcpField
K
kernel-debugging-advanced

kernel-debugging-advanced

github.com/mohitmishra786開発269330 回インストール18 週間前に更新
リポジトリ

kernel-debugging-advanced について

トレースと事後解析ツールでカーネルの遅延や障害を調べるエージェント向けスキルです。ftrace、trace-cmd、カーネルperf、プローブ、kgdb、vmcore解析を扱います。

主な機能

  1. 01ftraceの関数グラフトレース
  2. 02trace-cmdによる記録とレポート
  3. 03カーネルのプロファイリングとperfプローブ
  4. 04kprobesによる動的な調査
  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)
  • パニック後の 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/report
  • skills/observability/ebpf — BPF による kprobe の代替手段
  • skills/kernel-dev/writing-char-drivers — ioctl のトレース対象
  • skills/debuggers/core-dumps — ユーザー空間のコアダンプに関する関連情報

コメント