microsoft

debugpy: Debug Python Programs with DAP Clients

debugpy connects Python 3 programs to debuggers that speak the Debug Adapter Protocol. Use it to launch or attach to a process, pause execution, and inspect code through a compatible debugging client.

View on GitHub Compare
Stars
2.5k
Forks
208
Stars, last 30 days
+2
Last commit
2 days ago
Contributors
83

Our take

Activeregular commits and releases

Health score

59/100

How it is scored
Activity
55
Community
83
Issues
47
Pull requests
49

+2 stars in the last 30 days

Regular commits and releases, broad contributor participation, and ongoing issue and pull request activity make debugpy a well-maintained choice for Python debugging through DAP.

Good fit if

  • You need to debug Python 3 code through a DAP-compatible client.
  • You want both launch-time debugging and the option to attach to a running Python process.
  • Your project can use a Python runtime and you value a component with active releases and contributions from many people.

Look elsewhere if

  • You need a standalone graphical debugger rather than a component used with a DAP client.
  • You need to debug languages other than Python, which is the runtime identified by this project.
  • You require license terms to be confirmed from repository metadata without further verification, since the supplied GitHub metadata does not assert a license.
All health signals
Last commit2026-10-09 (2 days ago)
Commits, last 90 days20
Releases, last 12 months6 (latest v1.8.22, 2026-09-15)
Contributors83 (top contributor: 24% of commits)
Issues closed, last 90 days10 (typically closed in 42 days)
Pull requests merged, last 90 days20 (typically merged in 1 day)
Project age6 years

Checked on 2026-10-12 with the GitHub API.

Project history

Daily GitHub snapshots since Oct 7, 2026. History covers stars and forks; health signals are not tracked historically.

Selected snapshot

Stars

2,490

Forks

209

Change since Nov 14, 2026: 0 stars·0 forks

Overview

debugpy implements the Debug Adapter Protocol (DAP) for Python 3, allowing compatible editor and debugger clients to control and inspect Python programs. It addresses the integration between a Python process and DAP-based debugging tools, supporting both launching a program under the debugger and attaching to an existing process.

The project is actively maintained, with regular commits and releases, and development spread across many contributors rather than concentrated in one person. It is a focused debugging component, not a standalone graphical debugger: you use it with a DAP client.

Key Features

  • Launch Python scripts or modules with a debugger adapter listening for a client.
  • Wait for a client to attach before allowing program execution to continue.
  • Attach the debugger to a running Python process by its process ID.
  • Start debugging from Python code with debugpy.listen() and optionally block with debugpy.wait_for_client().
  • Pause at programmatic breakpoints using breakpoint() or debugpy.breakpoint().
  • Trigger post-mortem debugging for a caught exception when a client is attached.
  • Configure subprocess debugging and enable internal logs for troubleshooting.

Use Cases

  • Python developers using an editor with DAP support can launch scripts and inspect execution without switching to a separate debugger interface.
  • Teams investigating a service or long-running Python process can attach a compatible client to a process that is already running.
  • Developers can add optional debugging hooks to scripts or applications, then pause execution when a client connects.
  • A team diagnosing a caught exception can trigger a debugger stop to inspect the remaining traceback and evaluate expressions.

What you need

Detected in the repository

  • Python (from pyproject.toml)
  • A test suite and automated checks on GitHub Actions

Getting Started

Run a script with the adapter listening locally:

python -m debugpy --listen localhost:5678 myfile.py

Connect a DAP-compatible client to the listening adapter. See the README and command-line reference for installation, options, and details.

License in Plain Words

No standard license was detected. Without a license, the default copyright rules apply: you may read the code, but not reuse it. Check the repository or ask the authors.

Alternatives

  • PySnooper: PySnooper traces executed lines and local-variable changes, while debugpy provides interactive debugging through the Debug Adapter Protocol.
ProjectLanguageLicenseStarsStatus
debugpyPython–2.5kActive
PySnooperPythonMIT16.6kQuiet

Considerations

A debugging adapter needs a compatible DAP client; debugpy itself is not a complete editor or graphical debugging experience. Listening on 0.0.0.0 allows connections on all interfaces, and the README warns that anyone able to connect to the port can execute arbitrary code in the debugged process, so remote access should be restricted to secure networks. The project has recent commits and releases, and its contributors are not highly concentrated, but issues may take time to close. The supplied repository metadata reports the license as NOASSERTION, while the README displays an MIT license badge and links to a license file, so verify the applicable terms before adoption.

Found this useful?

Share it with someone who would like debugpy.

Comparisons