VSCode 使用 Attach模式, 本地/远程调试 Python 程序(免改源码)

发布时间:2026/7/29 12:36:43
VSCode 使用 Attach模式, 本地/远程调试 Python 程序(免改源码) 碎碎念这个方案特别适合深度学习训练PyTorch 等及本地/远程服务器调试且无需在代码中插入import debugpy对项目代码零侵入。另外这个方案可以很方便地支持直接在终端运行python脚本进行调试或者是通过sh脚本运行python脚本进行调试这两种方案。一、核心原理与准备工作1. 调试原理传统方式是直接执行 Python 脚本而 Attach 模式是先启动调试器debugpy开启指定端口再由它运行你的代码。最后通过VSCode 连接到该端口接管调试。流程Python 启动 ➔debugpy监听 5678 端口 ➔ 暂停等待 ➔ VSCode Attach 连接 ➔ 代码正式运行并在断点处暂停。2. 安装依赖通过python -m debugpy --version验证是否安装成功如果没有参照下面代码安装Bashpip install debugpy # 或者 conda install debugpy二、配置与调试流程1. VSCode 配置debug的 launch.json为attach模式在项目根目录新建或编辑.vscode/launch.jsonJSON{ version: 0.2.0, configurations: [ { name: db_Attach, type: debugpy, request: attach, connect: { host: 填入地址, port: 5678 }, justMyCode: false } ] }Note:“request”: “attach”特别指定以attach模式启动调试器host处需要填入本地或者服务器地址本地的可以填”localhost“或者”127.0.0.1“远程根据实际情况填justMyCode: false允许调试器深入追踪第三方库的源码比如numpy, torch等)2. 修改启动命令在原有执行命令的基础上增加debugpy的参数。例如原启动方式Bashpython train.py --config configs/train.yaml --batch_size 16修改为Attach 模式Bashpython -m debugpy --listen 5678 --wait-for-client train.py \ --config configs/train.yaml --batch_size 16(注Windows PowerShell 多行命令需将末尾的\替换为 )参数解析-m debugpy拦截默认执行优先加载调试器模块。--listen 5678暴露本地 5678 端口等待 VSCode 接入。--wait-for-client核心参数。强制程序在此处挂起等待直到 VSCode 成功连接后才执行train.py第一行代码确保绝不漏掉初始化阶段的断点。除了直接在终端执行python -m debugpy --listen 5678 --wait-for-client …也可以将这个语句写到一个sh脚本中适用于linux方便随时改输入参数比如创建一个debug.sh文件然后填入#!/bin/bash # 指定GPU可见 export CUDA_VISIBLE_DEVICES0 python -m debugpy --listen 5678 --wait-for-client \ train.py \ --config configs/train.yaml \ --batch_size 16最后再在终端执行bash debug.sh3. 完整的调试过程打断点在 VSCode 源码左侧行号旁点击打上红点注意红点必须打在有代码的地方打在空白行会失效。终端执行在终端执行修改后的带python -m debugpy --listen 5678 --wait-for-client 的命令或者脚本。连接调试完成步骤2后点击 VSCode侧边栏的 “运行和调试”然后在绿色箭头右边下拉选择db_Attach最后单击绿色箭头开始连接调试。开始 Debug连接成功后程序自动继续运行遇到断点即暂停并且可以随时查看变量和调用栈。