mcpField
P
python-debugpy

python-debugpy

github.com/openclaw开发393.8k336 次安装今天更新
代码仓库

关于 python-debugpy

面向 Python 开发者的调试 Skill,帮助按场景选择 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 时禁用并行测试工作进程;交互式标准输入通常会在工作进程池中中断。
  • 在当前使用的环境中保留 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()。
  • 如果进程在调试器分离后卡住,请确认它是否仍暂停在断点处。

评论

支持 Markdown