Skip to content
AI & Agents
Skill

/python-debugpy

Debug Python with pdb, breakpoint(), post-mortem inspection, and debugpy remote attach.

BOOST
From plugin
openclaw
391k68 skills
Install
$ npx -y skills add openclaw/openclaw --skill python-debugpy --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/python-debugpy

Context preview

The summary Claude sees to decide when to auto-load this skill.

Debug Python with pdb, breakpoint(), post-mortem inspection, and debugpy remote attach.

SKILL.md

python-debugpy.SKILL.md
name: python-debugpy
description: Debug Python with pdb, breakpoint(), post-mortem inspection, and debugpy remote attach.
metadata: { "openclaw": { "requires": { "bins": ["python3"] } } }

Python Debugpy

Use when Python code needs interactive debugging: hidden locals, confusing state mutation, failing tests, subprocesses, long-running services, or remote/headless attach.

Pick the smallest debugger that reaches the bad frame.

Choose

  • `breakpoint()`: local code, source edits ok, fastest path.
  • `python3 -m pdb`: no source edit, launch from the beginning.
  • `python3 -m pdb -c continue`: stop at an unhandled exception.
  • `debugpy`: remote/headless process, DAP client, already-running PID, or service startup race.

Commands

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>

For source-edit attach:

import debugpy

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

For post-mortem:

import pdb, sys

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

pdb

  • Flow: `n`, `s`, `r`, `c`, `q`.
  • Stack/source: `w`, `u`, `d`, `a`, `l`, `ll`.
  • Values: `p expr`, `pp expr`, `display expr`.
  • Breakpoints: `b file.py:42`, `b func`, `b file.py:42, condition`, `cl <num>`.
  • Mutate/evaluate: `!statement`; full REPL: `interact`.

Rules

  • Reproduce with the smallest command/test first.
  • Disable parallel test workers for pdb; interactive stdin usually breaks inside worker pools.
  • Keep `debugpy` in the active env; do not add it as a project dependency unless the project already wants it.
  • Bind debug servers to `127.0.0.1`; do not expose `0.0.0.0` unless isolated or tunnelled.
  • Use unique ports for parallel sessions.
  • `debugpy --pid` injects into a running process; confirm the target pid before attaching.
  • If PID attach fails on Linux, check ptrace/container privileges before changing the target.
  • Cleanup before commit: `rg -n 'breakpoint\\(|pdb\\.set_trace|debugpy\\.' --type py`.
  • Rerun the normal project test/gate without the debugger.
  • `PYTHONBREAKPOINT=0` disables `breakpoint()`.
  • If a process is stuck after debugger detach, confirm it is not still paused at a breakpoint.
Read more
Ships withopenclaw

OpenClaw is an open-source AI assistant that runs on your own computer and meets you in the channels you already use: Discord, iMessage, Slack, Teams, Telegram, WhatsApp, and 20+ more, plus native apps for macOS, iOS, Android, Windows, and Linux.

Get the whole plugin
Stats
391,228
Stars
82,236
Forks
Active
Maintenance
TypeScript
Language
MIT
License
4m ago
Last commit
10mo ago
Created
3h ago
Added

Repo: openclaw/openclaw

Other skills on openclaw.