debugpy
debugpy 是遵循 Debug Adapter Protocol (DAP) 标准的 Python 调试器,支持跨 IDE、远程调试、多进程等场景。
核心特性
- DAP 协议:统一 IDE 与调试器通信规范,兼容 VS Code、PyCharm 等
- 远程调试:通过 socket 连接服务器/容器中的 Python 应用
- 多进程支持:原生支持 multiprocessing 调试
- Jupyter 集成:可调试 Notebook 代码
安装
基础用法
命令行调试
1
| python -m debugpy --listen 5678 --wait-for-client script.py
|
VS Code 配置
本地调试(.vscode/launch.json):
1
2
3
4
5
6
7
| {
"name": "Python: 本地调试",
"type": "python",
"request": "launch",
"program": "${file}",
"justMyCode": true
}
|
远程调试:
1
2
3
4
5
6
7
8
9
| {
"name": "Python: 远程调试",
"type": "python",
"request": "attach",
"connect": {"host": "服务器IP", "port": 5678},
"pathMappings": [
{"localRoot": "${workspaceFolder}", "remoteRoot": "/app"}
]
}
|
远程调试流程
1
2
3
4
| # 服务端启动
python -m debugpy --listen 0.0.0.0:5678 --wait-for-client app.py
# 客户端通过 VS Code attach 连接
|
Jupyter Notebook 调试
1
2
3
| import debugpy
debugpy.listen(5678)
# VS Code attach 后即可调试
|
启动方式对比
| 方式 | 说明 | 推荐 |
|---|
debugpy --listen ... | 直接调用可执行入口 | Linux/macOS |
python -m debugpy --listen ... | 模块方式启动 | 100% 兼容 |
python -m debugpy 严格使用当前 Python 解释器,避免多版本混乱。
调试技巧
| 技巧 | 用途 |
|---|
| 条件断点 | 仅在条件满足时触发 |
| 日志断点 | 不修改代码输出日志 |
| 变量监视 | 实时追踪变量变化 |
| SSH 隧道 | ssh -L 5678:localhost:5678 user@server 安全连接 |
常见问题
| 问题 | 原因 | 解决 |
|---|
| 远程连接失败 | 端口/防火墙 | 检查 iptables,确认监听 0.0.0.0 |
| 断点灰色 | 路径映射错误 | 检查 pathMappings 配置 |
| 调试卡死 | 死锁/资源占用 | 关闭 justMyCode 定位问题 |
参考
Comments