debugpy:微软开源的 Python 调试器
微软开源的Python调试器debugpy提供了灵活可靠的调试方案,支持命令行和代码嵌入两种使用模式。它实现了Debug Adapter Protocol,可在本地或远程进行调试,特别适合服务器问题排查和容器化环境。工具支持断点设置、子进程调试和进程附加功能,文档齐全且采用MIT协议开源。debugpy既可作为独立调试器使用,也能与支持DAP的编辑器集成,为Python开发者提供了不依赖特定IDE
debugpy:微软开源的 Python 调试器
debugpy 是微软开源的一款 Python 调试器,目前收获了 2,415 个 Star。它完整实现了 Debug Adapter Protocol,面向 Python 3 提供标准化的调试能力。
这个工具的定位很清晰:让 Python 程序的调试不再依赖特定 IDE。很多开发者调试 Python 时,要么用编辑器自带的调试器,要么在代码里写 print。debugpy 提供了第三种选择,既能在命令行独立运行,也能嵌入代码作为库调用,灵活性比较高。

两种用法,覆盖不同场景
debugpy 提供 CLI 和 Import 两种使用方式。
命令行模式下,可以直接启动脚本并开启调试监听。最常见的用法是指定一个端口,debugpy 会在这个端口等待调试客户端连接:
python -m debugpy --listen localhost:5678 myfile.py
加上 --wait-for-client 参数后,程序会在调试客户端连接完成后才开始执行。这在排查启动阶段的问题时很有用,能确保你不遗漏任何初始化逻辑。
除了脚本文件,它也支持模块调试。用 -m 参数代替文件名,就能调试一个 Python 模块,所有命令行参数都会原样传递给被调试的模块。
更实用的是进程附加功能。如果你有一个已经在运行的 Python 进程,可以通过 PID 直接把调试器注入进去,不需要重启程序。这在生产环境排查问题时很有价值。
在代码中引入 debugpy 也同样简单。调用 debugpy.listen() 开启监听,传入主机和端口即可。配合 debugpy.wait_for_client() 可以阻塞程序执行,直到调试器连接。它还支持标准的 breakpoint() 函数,可以在代码任意位置设置断点,如果调试器未连接,断点会自动跳过,不会影响正常运行。

远程调试是亮点
debugpy 支持监听不同的网络接口。默认只监听 127.0.0.1,适合本地开发。如果需要从另一台机器连接,可以把它绑定到 0.0.0.0,这样就能在局域网或服务器环境中进行远程调试。
这个功能在容器化部署和服务器问题排查时很实用。开发者在本地用 VS Code 或其他支持 DAP 的客户端,就能连接到远程运行的 Python 程序,像调试本地代码一样单步执行、查看变量。
实际用起来如何
debugpy 的文档覆盖了 CLI 和 API 的完整用法,每个功能都有代码示例。日志功能也做得比较到位,通过 --log-to 参数或 debugpy.log_to() 可以把调试器内部日志输出到指定目录,方便排查调试器本身的问题。子进程调试也有专门的支持,可以配置是否跟踪被调试进程创建的子进程。
使用过程中需要注意一点:把调试端口绑定到公共接口时,要考虑安全风险。因为任何能连上该端口的人都能在调试进程里执行代码,所以建议只在安全的网络环境中开放远程调试。
适合谁用
如果你在用 VS Code 或其他支持 DAP 的编辑器,debugpy 可以直接对接,调试体验比较一致。对于需要远程调试 Python 程序的开发者,这个工具能省去很多配置麻烦。
微软用 MIT 协议开源了 debugpy,代码完全开放,可以按需修改和部署。整体来看,这是一个解决实际问题的调试工具,接口设计简洁,文档齐全,值得 Python 开发者关注。
,这是一个解决实际问题的调试工具,接口设计简洁,文档齐全,值得 Python 开发者关注。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)