VS代码:在Docker容器中附加到ASP.NET Core进程时,没有进程运行带有ID错误的错误

时间:2019-06-20 19:17:12

标签: docker debugging asp.net-core .net-core visual-studio-code

当前,我直接在Linux工作站上运行ASP.NET Core。但是我想直接使用Docker进行开发,包括远程调试。根据不同的文章,似乎需要vsdbg。所以我尝试了以下方法:

FROM mcr.microsoft.com/dotnet/core/sdk:2.2
RUN apt update && \
    apt install unzip && \
    curl -sSL https://aka.ms/getvsdbgsh | /bin/sh /dev/stdin -v latest -l /vsdbg

WORKDIR /app
COPY . .
RUN dotnet publish
WORKDIR /app/bin/Debug/netcoreapp2.2/publish/
ENTRYPOINT dotnet MyApp.dll

docker容器已启动,我可以在浏览器中访问我的ASP.NET Core应用程序。 VS代码应随附以下launch.json代码段:

    {
        "name": ".NET Core Attach",
        "type": "coreclr",
        "request": "attach",
        "processId": "${command:pickProcess}",
        "sourceFileMap": {
            "/app": "${workspaceRoot}"
        },
        "pipeTransport": {
            "pipeProgram": "docker",
            "pipeArgs": ["exec", "-i", "my-docker-container-name"],
            "debuggerPath": "/vsdbg/vsdbg",
            "pipeCwd": "${workspaceRoot}",
            "quoteArgs": false
        }
    }

运行此调试附加条目后,它将显示带有进程ID的选择列表。第一个包含dotnet MyApp.dll,因此这必须是我的docker进程。但是,选择后,VS Code将显示一个弹出窗口,显示当前没有任何进程使用选定的ID运行。

进程ID是正确的。我尝试运行kill <pid>,并且退出了Docker容器中的dotnet进程。

那么,为什么VS Code会因docker进程未运行的错误而中断?

系统信息:

  • Ubuntu 19.04
  • Docker 19.03.0-rc3
  • VS代码1.35.1

编辑

似乎与quoteArgs有关。当我将其设置为false时,会发生另一个错误:

  

OCI运行时exec失败:exec失败:container_linux.go:345:启动容器进程导致“ exec:\” / vsdbg / vsdbg --interpreter = vscode \”:统计信息/ vsdbg / vsdbg --interpreter = vscode:否这样的文件或目录”:未知

没有引号,他尝试执行"/usr/bin/docker" exec -i <my-docker-container-name> /vsdbg/vsdbg --interpreter=vscode。我手动执行此操作,它启动vsdbg并保持终端打开。因此quoteArgs: false对于Docker似乎是正确的。尽管我完全不明白为什么这会导致VS Code中奇怪的 no进程没有运行pid 错误。

0 个答案:

没有答案