VSCode远程服务器中指定终端启动Python调试器的问题
解决VSCode远程集群交互式作业中Python调试断点不生效的问题
核心方案:通过launch.json配置远程附加调试,配合debugpy的等待模式启动脚本
步骤1:在交互式作业终端中启动带调试等待的脚本
先通过qsub -I(根据集群资源需求添加参数,比如-l nodes=1:ppn=4等)进入交互式作业终端,切换到脚本所在目录后执行:
python -m debugpy --listen 0.0.0.0:5678 --wait-for-client ./myscript.py
--wait-for-client是关键:让脚本暂停执行,直到VSCode调试器连接,避免脚本直接跑完导致断点无效。
步骤2:配置VSCode的launch.json
打开VSCode调试面板(快捷键Ctrl+Shift+D),点击"创建launch.json文件",选择"Python"->"Remote Attach"模板,修改配置如下:
{ "version": "0.2.0", "configurations": [ { "name": "Remote Attach to Job", "type": "python", "request": "attach", "connect": { "host": "localhost", "port": 5678 }, "pathMappings": [ { "localRoot": "${workspaceFolder}", "remoteRoot": "/your/remote/script/path" } ], "justMyCode": false } ] }
host填localhost:VSCode已通过远程连接绑定服务器,此处localhost即作业终端所在节点。pathMappings必须正确:将本地VSCode工作区路径映射到远程脚本的实际路径,确保断点对应到远程脚本的正确行。justMyCode设为false:如需调试第三方库代码可开启,仅调试自研代码可保留默认true。
步骤3:启动调试
在VSCode调试面板选择配置好的"Remote Attach to Job",点击启动按钮。脚本会恢复执行,设置的断点即可正常触发。
注意事项
- 确保作业终端的Python环境与VSCode远程会话使用的解释器一致,避免环境差异导致调试异常。
- 确认作业节点的5678端口允许服务器内部连接,交互式作业节点一般默认开放。
- 调试matplotlib可视化代码时,建议添加
plt.show(block=True),防止绘图窗口在调试时自动关闭。
内容的提问来源于stack exchange,提问作者raspberry_phy
相关产品推荐
相关产品推荐

