在 VSCode中附加调试器到已运行进程,需配置launch.json的attach类型,并确保目标进程启用调试端口及符号信息;不同语言要求各异:Node.js用--inspect、.NET需调试模式、Python需debugpy.listen、C/C++需-g编译;配置后选择对应启动项即可连接。

在 VSCode 中附加调试器到已运行的进程,关键在于正确配置 launch.json 中的 attach 类型启动项,并确保目标进程支持调试(如启用调试端口、符号信息等)。
确认目标进程支持调试
不同语言/运行时要求不同:
-
Node.js:启动时需加
--inspect或--inspect-brk参数(例如:node --inspect-brk app.js),并确保未禁用远程调试。 -
.NET Core / .NET 5+:需以调试模式运行(如
dotnet run默认启用调试),或确保DOTNET_STARTUP_HOOKS等未干扰调试器连接。 -
Python(使用 ptvsd / debugpy):需在代码中插入
debugpy.listen(5678)并保持运行,或通过命令行启动时指定调试端口。 -
C/C++(GDB/LLDB):进程需未被其他调试器占用,且最好带调试符号(编译时加
-g)。
创建 attach 配置(launch.json)
打开项目根目录下的 .vscode/launch.json(若无则通过命令面板「Debug: Open launch.json」生成),添加一个 type: "attach" 的配置。示例(以 Node.js 为例):
{
"name": "Attach to Process",
"type": "node",
"request": "attach",
"port": 9229,
"address": "localhost",
"localRoot": "${workspaceFolder}",
"remoteRoot": "${workspaceFolder}"
}
注意:port 必须与目标进程实际监听的调试端口一致(Node 默认是 9229,可通过 node --inspect=0.0.0.0:9999 自定义)。
大家都知道,在进行J2EE项目的开发过程中,在调试阶段如果只是修改了页面是不需要重启应用服务器的,比如不需要重启Tomcat。只需要在浏览器中 进行页面刷新即可。其实之所以不用重启Tomcat等应用服务器,其根本原因是因为我们可以在应用服务器的配置文件中设置虚拟目录,这样就可以知道web 项目所在的目录,于是就可以省去打包、然后再重新发布到服务器的步骤。感兴趣的朋友可以过来看看
查找并选择目标进程(可选自动端口发现)
VSCode 支持两种 attach 方式:
-
端口模式(推荐):进程已明确监听调试端口,直接填入
port即可连接。 -
进程 ID 模式(部分调试器支持):如 C/C++ 扩展可设
"type": "cppdbg"+"processId": 0,启动后会弹出进程列表供选择。 - 某些扩展(如 Python 的 Debugpy)还支持
"justMyCode": false和"connect": { "host": "localhost", "port": 5678 }直连。
启动附加并验证
点击 VSCode 左侧调试图标 → 选择刚配置的「Attach to Process」→ 点击绿色 ▶ 启动附加:
- 成功时状态栏显示「正在附加…」→「已附加」,断点可命中,变量/调用栈可查看。
- 失败常见原因:端口被占、防火墙拦截、跨平台路径映射错误(
localRoot/remoteRoot不匹配)、进程未启用调试。 - 可在「DEBUG CONSOLE」中查看具体错误提示,比如
Connection refused表示端口不通,Target not found可能是 URL 或路径配置问题。
基本上就这些。只要进程开着调试通道,VSCode 的 attach 调试很直接——配对端口,点一下,就能进现场看状态了。









