mcpField
P
python-debugpy

python-debugpy

github.com/openclaw開発393.8k336 回インストール今日更新
リポジトリ

python-debugpy について

Python開発者が対話型デバッグの場面に応じてpdbとdebugpyを選ぶためのスキルです。ローカル、リモート、ヘッドレス、実行中プロセス、事後解析に対応します。

主な機能

  1. 01状況に応じたpdbとdebugpyの選択
  2. 02ローカルおよびリモートプロセスのデバッグ
  3. 03実行中PIDへのアタッチ
  4. 04値、スタック、ブレークポイントの確認
  5. 05例外発生後の調査

活用シーン

  1. 01失敗したテストの状態変化を追跡
  2. 02リモートまたはヘッドレスサービスへの接続
  3. 03未処理例外の原因調査
  4. 04実行中のPythonプロセスのデバッグ

インストール

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

$npx skills add https://github.com/openclaw/openclaw --skill python-debugpy

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

詳細

Python Debugpy

Python コードの対話型デバッグが必要な場合に使用します。たとえば、隠れたローカル変数、把握しにくい状態の変更、失敗するテスト、サブプロセス、長時間実行されるサービス、リモートまたはヘッドレス環境からのアタッチなどです。

問題のあるフレームに到達できる、最もシンプルなデバッガーを選びます。

選択

  • breakpoint():ローカルコードで、ソースの編集が可能な場合の最速の方法です。
  • python3 -m pdb:ソースを編集せず、最初から起動します。
  • python3 -m pdb -c continue:未処理の例外が発生した時点で停止します。
  • debugpy:リモートまたはヘッドレスのプロセス、DAP クライアント、すでに実行中の PID、サービスの起動競合に使用します。

コマンド

python3 -m pdb path/to/script.py arg1
python3 -m pdb -c continue path/to/script.py
python3 -c "import debugpy" || python3 -m pip install debugpy
python3 -m debugpy --listen 127.0.0.1:5678 --wait-for-client path/to/script.py
python3 -m debugpy --listen 127.0.0.1:5678 --wait-for-client -m package.module
python3 -m debugpy --listen 127.0.0.1:5678 --pid <pid>

ソースを編集してアタッチする場合:

import debugpy

debugpy.listen(("127.0.0.1", 5678))
debugpy.wait_for_client()
debugpy.breakpoint()

事後解析の場合:

import pdb, sys

try:
    run()
except Exception:
    pdb.post_mortem(sys.exc_info()[2])
    raise

pdb

  • 実行制御:n、s、r、c、q。
  • スタック/ソース:w、u、d、a、l、ll。
  • 値:p expr、pp expr、display expr。
  • ブレークポイント:b file.py:42、b func、b file.py:42, condition、cl <num>。
  • 変更/評価:!statement。完全な REPL:interact。

ルール

  • まず、最小限のコマンドまたはテストで再現します。
  • pdb では並列テストワーカーを無効にします。対話型 stdin は通常、ワーカープール内で問題を起こします。
  • debugpy はアクティブな環境に入れておきます。プロジェクトがすでに依存関係として必要としていない限り、プロジェクトの依存関係には追加しないでください。
  • デバッグサーバーは 127.0.0.1 にバインドします。分離環境またはトンネル経由でない限り、0.0.0.0 に公開しないでください。
  • 並列セッションでは、一意のポートを使用します。
  • debugpy --pid は実行中のプロセスに挿入します。アタッチする前に、対象の pid を確認してください。
  • Linux で PID へのアタッチに失敗した場合は、対象を変更する前に ptrace/コンテナーの権限を確認してください。
  • コミット前にクリーンアップします:rg -n 'breakpoint\\(|pdb\\.set_trace|debugpy\\.' --type py。
  • デバッガーを使わずに、通常のプロジェクトのテスト/ゲートを再実行します。
  • PYTHONBREAKPOINT=0 を設定すると breakpoint() が無効になります。
  • デバッガーをデタッチした後もプロセスが停止したままの場合は、ブレークポイントで一時停止していないか確認してください。

コメント