VSCode能否附加到远程Python进程,基于本地源码调试?
可以通过VSCode实现Python远程进程附加调试
完全可以实现你要的功能——将本地Python源码附加到远程运行的.par进程,进行断点、单步执行等调试操作,VSCode的Python调试工具链支持该特性,具体步骤如下:
1. 让远程.par进程开启调试监听
首先需要确保远程运行的.par进程启动调试服务。你需要在打包成.par之前的本地源码中加入调试监听代码(使用debugpy,这是官方推荐的Python调试库,原ptvsd已并入其中):
import debugpy # 监听所有网卡的5678端口(端口可自定义) debugpy.listen(('0.0.0.0', 5678)) # 若需要等待调试器连接后再继续执行进程,添加下面一行 # debugpy.wait_for_client()
将修改后的源码重新打包为.par文件,然后在远程机器上启动该.par进程,此时进程会处于监听状态,等待调试器连接。
2. 配置VSCode的远程调试会话
在本地VSCode中打开对应的源码项目,配置调试文件:
- 打开「调试」面板,点击「创建launch.json文件」,选择「Python」环境。
- 将自动生成的配置替换为远程附加配置:
{ "version": "0.2.0", "configurations": [ { "name": "Python: Remote Attach", "type": "python", "request": "attach", "connect": { "host": "远程机器的IP地址", "port": 5678 // 要和远程监听的端口一致 }, "pathMappings": [ { "localRoot": "${workspaceFolder}", // 本地源码的根目录 "remoteRoot": "/远程进程对应的代码路径" // 需与远程进程运行时的代码路径匹配,比如.par解压后的临时目录 } ], "justMyCode": true // 仅调试自己的代码,若需调试依赖库可设为false } ] }
关键注意事项:pathMappings必须正确映射本地源码和远程进程的代码路径,否则断点会无法命中。可以在远程进程中通过print(__file__)获取实际运行的代码路径。
3. 启动调试并使用
- 在本地源码的目标位置设置断点。
- 在VSCode的调试面板中选择「Python: Remote Attach」,点击启动按钮。
- 连接成功后,即可像调试本地进程一样使用单步执行、查看变量、断点调试等功能。
额外注意点
- 确保远程机器的防火墙开放了调试所用的端口(如5678),本地机器能正常访问该端口。
- 本地源码必须和远程运行的.par包内的代码完全一致,包括代码版本、内容,否则会出现断点错位的问题。
内容的提问来源于stack exchange,提问作者Ames ISU
相关产品推荐
相关产品推荐

