Visual Studio 2019 C# Docker 调试进程附加错误

Visual Studio 2019 C# Docker debugging process attach error

我正在尝试调试 Linux 容器,该容器 运行 是 Visual Studio 2019(版本 16.11.10)的 C#/.NET 6.0 控制台应用程序。

当我使用 Debug / Attach to Process... 连接到我的 运行ning 容器并附加到我的进程时,我收到错误:

Failed to launch debug adapter. Additional information may be available in the output window.

Unable to find debugger script at '/home/dockeruser/.vs-debugger'

出于公司安全目的,我运行以用户 dockeruser 的身份运行我的容器工作负载,但我可以在调整我的Dockerfile 到 运行 作为用户 root。报错信息变为

Unable to find debugger script at '/root/.vs-debugger'

输出显示

Unable to find debugger script at '/home/dockeruser/.vs-debugger'.


Initialization log:
Determining user folder on remote system...
Checking for existing installation of debugging tools...
Downloading debugger launcher...
Creating debugger installation folder: /home/dockeruser/.vs-debugger
Copying debugger launcher to /home/dockeruser/.vs-debugger/GetVsDbg.sh
Failed: Failed to copy files.
Unable to find debugger script at '/home/dockeruser/.vs-debugger'.
Failed: Unable to find debugger script at '/home/dockeruser/.vs-debugger'.
The program '[1] dotnet' has exited with code -1 (0xffffffff).

我可以通过 docker 在我的容器上执行 一个 bash 会话和 运行ning GetDbgVs.sh 来解决这个问题] 如 中所述,但做起来很痛苦 - 感觉有些地方配置错误。

我已经确认我的 windows 身份是 windows docker-users 组的成员。

虽然不是我想要的答案,但我有一个 1-liner shell 解决方法,当我想使用 VS2019 调试附加时,我在我的容器上执行,一旦我知道我的 。这可能对遇到此问题的其他人有用。

docker exec -u root <CONTAINER_NAME> sh -c "apt-get update && apt-get install wget -y"; docker exec <CONTAINER_NAME> sh -c "mkdir -p ~/.vs-debugger; wget https://aka.ms/getvsdbgsh -O ~/.vs-debugger/GetVsDbg.sh; chmod a+x ~/.vs-debugger/GetVsDbg.sh"

  • 第一个命令以 root 身份安装 wget
  • 第二个命令下载GetVsDbg.sh到~/.vs-debugger