如何在VS Code中将.NET 7应用调试器附加到Docker进程
调试Docker容器内.NET 7 Web API的解决方案
1. 确保Debug构建与调试符号存在
你的Dockerfile中build和publish阶段默认使用Release配置,虽然docker-compose传递了configuration=Debug参数,但需确认构建过程实际生成了带调试符号(.pdb文件)的Debug版本:
- 重新构建容器:执行
docker-compose build,确保构建时Debug参数生效 - 进入容器验证:执行
docker exec -it testdockerattach ls /app,确认目录下存在TestDockerAttach.pdb文件
2. 正确选择要附加的进程
当你启动调试配置.NET Core Attach后,VS Code会列出容器内的所有进程,你需要选择**命令行包含dotnet TestDockerAttach.dll**的进程:
- 若进程列表仅显示
dotnet,可查看进程的命令行参数,找到对应你的Web API项目的那条记录
3. 优化launch.json配置(可选,提升调试体验)
你可以为launch.json添加pipeTransport配置,直接指定Docker容器的连接方式,同时映射源码路径确保断点命中:
{ "name": ".NET Core Attach to Docker", "type": "coreclr", "request": "attach", "processId": "${command:pickRemoteProcess}", "pipeTransport": { "pipeProgram": "docker", "pipeArgs": ["exec", "-i", "testdockerattach"], "debuggerPath": "/remote_debugger/vsdbg", "pipeCwd": "${workspaceFolder}", "quoteArgs": false }, "sourceFileMap": { "/src/TestDockerAttach": "${workspaceFolder}/TestDockerAttach" } }
4. 启动调试的步骤
- 运行
docker-compose up -d启动容器 - 在VS Code调试面板选择你配置的调试项
- 在弹出的进程列表中选中目标进程,即可开始调试
内容的提问来源于stack exchange,提问作者lcarvalho
相关产品推荐
相关产品推荐

