在 Linux 上使用 SSH 通过附加到进程调试 .NET Core自 Visual Studio 2017 起,可以通过 SSH 附加到在本地或远程 Linux 部署上运行的 .NET Core 进程。 本文介绍调试的设置方法和调试方法。 有关使用 Docker 容器的...
在 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 计算机上运行时,就可以附加调试器了。
-
在 Visual Studio 中,选择“调试” > “附加到进程…” 。
-
在“连接类型”列表中,选择“SSH” 。
-
将“连接目标”更改为目标计算机的 IP 地址或主机名。
如果你还没有提供凭据,系统会提示你输入密码和/或私钥文件。
除了 SSH 服务器运行的端口外,不需要配置任何端口。
-
查找要调试的进程。
代码以唯一的进程名或名为 dotnet 的进程运行。 若要查找你感兴趣的进程,请查看“Title”列,该列显示了进程的命令行参数。
在下面的示例中,你将在“附加到进程”对话框中显示的 SSH 传输上看到远程 Linux 计算机中的进程列表。
-
选择 “附加” 。
-
在显示的对话框中,选择要调试的代码类型。 选择“托管(.NET Core for Unix)”。
-
使用 Visual Studio 调试功能来调试应用。
在下面的示例中,你将看到 Visual Studio 调试器在远程 Linux 计算机上运行的代码断点停止。
可能遇到的问题及解决
-
由于
GFW
的原因linux端的~/vsdbg
下载会失败,安装对应版本的clash-
下载 https://github.com/Dreamacro/clash 的 release
-
下载配置文件
-
解压缩并运行 clash
-
设置 系统 或者 terminal 的代理为 clash 开放的代理端口(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
- 如何使用C# 捕获进程输出 2023-03-10
- 在C# 8中如何使用默认接口方法详解 2023-03-29
- Oracle中for循环的使用方法 2023-07-04
- .NET CORE DI 依赖注入 2023-09-27
- user32.dll 函数说明小结 2022-12-26
- WPF使用DrawingContext实现绘制刻度条 2023-07-04
- Unity Shader实现模糊效果 2023-04-27
- C# 使用Aspose.Cells 导出Excel的步骤及问题记录 2023-05-16
- c# 模拟线性回归的示例 2023-03-14
- Unity3D实现渐变颜色效果 2023-01-16