在Windows上远程调试Ubuntu-Arm上的.Netcore

在 Linux 上使用 SSH 通过附加到进程调试 .NET Core

自 Visual Studio 2017 起,可以通过 SSH 附加到在本地或远程 Linux 部署上运行的 .NET Core 进程。 本文介绍调试的设置方法和调试方法。 有关使用 Docker 容器的调试方案,请参阅附加到在 Docker 容器上运行的进程

先决条件

  • 在 Visual Studio 计算机上,需要安装“ASP.NET 和 Web 开发”工作负载或“.NET Core 跨平台开发”工作负载 。

  • 在 Linux 服务器上,需要安装 SSH 服务器,可使用 curl 或 wget 解压缩并安装。 例如,在 Ubuntu 上,可以通过运行以下内容来实现此目的:

    cmd复制

    sudo apt-get install openssh-server unzip curl
    
  • 在 Linux 服务器上,在 Linux 上安装 .NET 运行时,并找到与 Linux 发行版(如 Ubuntu)匹配的页面。 .NET SDK 不是必需的。

  • 有关全面的 ASP.NET Core 说明,请参阅使用 Nginx 在 Linux 上托管 ASP.NET Core使用 Apache 在 Linux 上托管 ASP.NET Core

准备应用程序进行调试

准备应用程序以进行调试:

  • 生成应用程序时,请考虑使用“调试”配置。 调试零售编译代码(发布配置)比调试编译代码要困难得多。 如果需要使用“发布”配置,请先禁用“仅我的代码”。 若要禁用此设置,请选择“工具” > “选项” > “调试”,然后选择“启用仅我的代码” 。
  • 请确保项目配置为生成可移植 PDB(默认设置),并确保 PDB 与 DLL 位于相同的位置。 若要在 Visual Studio 中配置此项目,请右键单击它,然后选择“属性” > “生成” > “高级” > “调试信息” 。

生成并部署应用程序

在调试之前,可以使用多种方法来部署应用。 例如,你可以:

  • 将源复制到目标计算机,并在 Linux 计算机上使用 dotnet build 进行生成。
  • 在 Windows 上生成应用,然后将生成项目传输到 Linux 计算机。 (生成工件包含应用程序本身、可移植 PDB、它可能依赖的任何运行时库和 .deps.json 文件。)

在应用部署后,启动应用程序。

附加调试器

当应用程序在 Linux 计算机上运行时,就可以附加调试器了。

  1. 在 Visual Studio 中,选择“调试” > “附加到进程…” 。

  2. 在“连接类型”列表中,选择“SSH” 。

  3. 将“连接目标”更改为目标计算机的 IP 地址或主机名。

    如果你还没有提供凭据,系统会提示你输入密码和/或私钥文件。

    除了 SSH 服务器运行的端口外,不需要配置任何端口。

  4. 查找要调试的进程。

    代码以唯一的进程名或名为 dotnet 的进程运行。 若要查找你感兴趣的进程,请查看“Title”列,该列显示了进程的命令行参数。

    在下面的示例中,你将在“附加到进程”对话框中显示的 SSH 传输上看到远程 Linux 计算机中的进程列表。

    在Windows上远程调试Ubuntu-Arm上的.Netcore

  5. 选择 “附加”

  6. 在显示的对话框中,选择要调试的代码类型。 选择“托管(.NET Core for Unix)”。

  7. 使用 Visual Studio 调试功能来调试应用。

    在下面的示例中,你将看到 Visual Studio 调试器在远程 Linux 计算机上运行的代码断点停止。

    在Windows上远程调试Ubuntu-Arm上的.Netcore

可能遇到的问题及解决

  • 由于GFW的原因linux端的~/vsdbg下载会失败,安装对应版本的*

    1. 下载 https://github.com/Dreamacro/* 的 release

    2. 下载配置文件

    3. 解压缩并运行 *

    4. 设置 系统 或者 terminal 的代理为 * 开放的代理端口(7890/7891)

  • 设置代理

    export http_proxy="http://127.0.0.1:7890"
    export https_proxy="http://127.0.0.1:7890"
    
  • 手动执行shell下载vsdbg

    # 下载GetVsDbg.sh
    curl -sSL https://aka.ms/getvsdbgsh | /bin/sh /dev/stdin -v latest -l ~/vsdbg
    
    # 使用GetVsDbg.sh下载vsdbg
    /bin/sh /root/.vs-debugger/GetVsDbg.sh -v vs2019 -l /root/.vs-debugger/vs2019 -a /remote_debugger
    Info: Previous installation at '/root/.vs-debugger/vs2019' not found
    Info: Using vsdbg version '16.9.20122.2'
    Using arguments
        Version                    : 'vs2019'
        Location                   : '/root/.vs-debugger/vs2019'
        SkipDownloads              : 'false'
        LaunchVsDbgAfter           : 'false'
        RemoveExistingOnUpgrade    : 'false'
    Info: Using Runtime ID 'linux-arm'
    Downloading https://vsdebugger.azureedge.net/vsdbg-16-9-20122-2/vsdbg-linux-arm.tar.gz
    Info: Successfully installed vsdbg at '/root/.vs-debugger/vs2019'
    

VS2019的调试效果

在Windows上远程调试Ubuntu-Arm上的.Netcore

上一篇:5、k8s部署netcore


下一篇:.netCore.NPOI 下载数据到excel 自定义颜色 单元格宽度自适应 工具类