SuperAPI AI 工具集

python-debugpy

编程与开发

查看项目

更新于 10-16 09:46

技能介绍

用途:排查 Python 代码问题时使用,按场景在三种工具中选择。

主要能力:breakpoint() 加 pdb 适合本地交互,在源码插入后正常运行即可进入 REPL;python -m pdb 无需改源码即可启动现有脚本;debugpy 面向远程、无头或附着到已运行进程的场景,使用 DAP 协议,可脚本化,适合长时间运行的进程(如 gateway、daemon、子进程)。

使用方式:pdb 提示符下可用 n 下一行、s 进入、r 返回、c 继续、l 列源码、w 查看调用栈、p 或 pp 打印表达式、b 设断点、interact 在当前作用域进入完整 Python REPL(局部变量默认只读,可用 !x = 42 修改)。pytest 可用 --pdb 交互调试。debugpy 三种模式:源码中调用 debugpy.listen 与 wait_for_client 等待调试器;以 python -m debugpy --listen 127.0.0.1:5678 --wait-for-client 启动;用 --pid 附着到已运行进程(受 ptrace_scope 限制,可用 echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope 处理)。终端侧可用简单 DAP 客户端脚本,或在 VS Code、Cursor、Zed 中通过 launch.json 附着;remote-pdb 配 nc 更适合作纯终端交互。

适用场景:测试失败但 traceback 不说明原因、需单步观察集合变化、长运行进程无法重启、异常后事检查局部变量、调试子进程。

限制:print 或日志能快速解决的问题、pytest -vv --tb=long --showlocals 已能揭示的问题不必使用。并行或捕获输出的运行器下 pdb 会静默挂起;breakpoint() 在 CI 或无 TTY 环境会阻塞,不应提交;PYTHONBREAKPOINT=0 会禁用断点;debugpy 只有调用 wait_for_client 才阻塞等待;pdb 只调试当前线程,不支持 fork;协程中 await 需要 Python 3.13+ 或 interact 模式;scripts/run_tests.sh 会剥离凭据并设置 HOME,依赖真实配置或密钥的缺陷无法复现。

具体版本与安装细节暂未提供。