mcpField
D
debugger

debugger

github.com/zhaono1開発85748 回インストール10 週間前に更新
リポジトリ

debugger について

Debuggerは、ソフトウェアの問題を体系的に診断し、解決するためのスキルです。開発者が不具合の再現と範囲の絞り込みから、仮説検証、修正、回帰確認まで進められるよう支援します。

主な機能

  1. 01段階的な問題の再現
  2. 02スタックトレースとログの分析
  3. 03問題範囲の切り分け
  4. 04仮説の検証
  5. 05修正と回帰の確認

活用シーン

  1. 01アプリケーションの予期しない動作を調査
  2. 02最小再現で不具合の範囲を絞り込み
  3. 03修正を検証して再発を防止

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/zhaono1/agent-playbook --skill debugger

インストール後、Claude Code で/debuggerを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

README.md
references/
checklist.md
errors.md
patterns.md
scripts/
debug_report.py

詳細

デバッガー

コードの問題を体系的に診断し、解決する高度なデバッグスペシャリストです。

このスキルが有効になるタイミング

次の場合に有効になります。

  • エラーやバグを報告する
  • 「これをデバッグして」や「デバッグを手伝って」と伝える
  • 予期しない動作について説明する
  • 何かが動作しない理由を尋ねる

デバッグのプロセス

フェーズ 1:問題を把握する
  1. 問題を再現する

    • 再現するための正確な手順は何ですか?
    • 期待される動作は何ですか?
    • 実際の動作はどうなっていますか?
    • どのようなエラーメッセージが表示されますか?
  2. 状況を把握する

    # Check recent changes
    git log --oneline -10
    
    # Check error logs
    tail -f logs/error.log
    
    # Check environment
    env | grep -i debug
    
フェーズ 2:問題を切り分ける
  1. エラーの発生源を特定する

    • スタックトレースの分析
    • エラーコードの検索
    • ログの関連付け
  2. 範囲を絞り込む

    • 二分探索(一方をコメントアウトする)
    • 再現ケースを最小化する
    • 影響を受けるコンポーネントを特定する
フェーズ 3:根本原因を分析する
よくあるエラーのカテゴリ
カテゴリ症状調査手順
Null/Undefined「Cannot read X of undefined」変数の発生元を追跡する
型エラー「X is not a function」実際の型と想定される型を確認する
非同期処理の問題競合状態、タイミングPromise の処理や async/await を確認する
状態の問題古いデータ、誤った状態状態の変更を追跡する
ネットワークタイムアウト、接続拒否エンドポイント、CORS、認証を確認する
環境ローカルでは動作するが、本番環境では動作しない環境変数やバージョンを比較する
メモリメモリリーク、メモリ不足メモリ使用量をプロファイルする
並行処理デッドロック、競合状態ロックや共有状態を確認する
フェーズ 4:仮説を立てる

考えられる原因ごとに、次の手順を実行します。

  1. 仮説を立てる
  2. 検証するテストを作成する
  3. テストを実行する
  4. 仮説を確認または棄却する
フェーズ 5:修正して検証する
  1. 修正を実装する
  2. 必要に応じてログを追加する
  3. 修正をテストする
  4. リグレッションテストを追加する

デバッグ用コマンド

一般的なデバッグ
# Find recently modified files
find . -type f -mtime -1 -name "*.js" -o -name "*.ts" -o -name "*.py"

# Grep for error patterns
grep -r "ERROR\|FATAL\|Exception" logs/

# Search for suspicious patterns
grep -r "TODO\|FIXME\|XXX" src/

# Check for console.log left in code
grep -r "console\.log\|debugger" src/
言語別

JavaScript/TypeScript:

# Run with debug output
NODE_DEBUG=* node app.js

# Check syntax
node -c file.js

# Run tests in debug mode
npm test -- --inspect-brk

Python:

# Run with pdb
python -m pdb script.py

# Check syntax
python -m py_compile script.py

# Verbose mode
python -v script.py

Go:

# Race detection
go run -race main.go

# Debug build
go build -gcflags="-N -l"

# Profile
go test -cpuprofile=cpu.prof

よくあるデバッグパターン

パターン 1:分割統治法
# When you don't know where the bug is:
def process():
    step1()
    step2()
    step3()
    step4()

# Comment out half:
def process():
    step1()
    # step2()
    # step3()
    # step4()

# If bug disappears, uncomment half of commented:
def process():
    step1()
    step2()
    # step3()
    # step4()

# Continue until you isolate the bug
パターン 2:ログを追加する
// Before (mysterious failure):
async function getUser(id: string) {
  const user = await db.find(id);
  return transform(user);
}

// After (with logging):
async function getUser(id: string) {
  console.log('[DEBUG] getUser called with id:', id);
  const user = await db.find(id);
  console.log('[DEBUG] db.find returned:', user);
  const result = transform(user);
  console.log('[DEBUG] transform returned:', result);
  return result;
}
パターン 3:最小再現ケース
// Complex code with bug:
function processBatch(items, options) {
  // 100 lines of complex logic
}

// Create minimal reproduction:
function processBatch(items, options) {
  console.log('Items:', items.length);
  console.log('Options:', options);
  // Test with minimal data
  return processBatch([items[0]], options);
}

エラーメッセージの分析

よくあるエラーメッセージ
エラー考えられる原因解決策
Cannot read property 'X' of undefinednull/undefined に対するプロパティへのアクセスnull チェックを追加する、オプショナルチェーンを使用する
X is not a function型の誤り、名前のシャドーイングtypeof を確認する、インポートを検証する
Unexpected token構文エラーエラーの直前の行を確認し、構文を検証する
Module not foundインポートパスの誤り相対パスを確認し、ファイルの存在を検証する
EADDRINUSEポートがすでに使用されている既存のプロセスを終了するか、別のポートを使用する
Connection refusedサービスが起動していないサービスを起動し、ポートを確認する
Timeoutリクエストの処理が遅すぎるタイムアウトを延長し、ネットワークを確認する

デバッグチェックリスト

  • 問題を一貫して再現できる
  • エラーが発生する正確な場所を特定した
  • 根本原因を理解している
  • 修正案がある
  • 修正によって既存の機能が壊れない
  • 再発を防ぐためのテストを追加した

スクリプト

デバッグレポートを生成します。

python3 scripts/debug_report.py --name <error-message> --output debug-report.md

参考資料

  • references/checklist.md - デバッグチェックリスト
  • references/patterns.md - よくあるデバッグパターン
  • references/errors.md - エラーメッセージのリファレンス

コメント