使用 SSH 在 Linux 上远程调试 .NET Core 实例 演示

时间:2024-03-07 18:32:57

必备条件

在 Visual Studio 计算机上,需要安装ASP.NET 和 web 开发工作负荷或 .net Core 跨平台开发工作负荷。

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

sudo apt-get install openssh-server unzip curl

yum install openssh-server

 

生成并部署应用程序

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

  • 请考虑在生成应用程序时使用调试配置。 调试零售编译的代码(发布配置)比调试编译的代码更难。 如果需要使用 Release 配置,请先禁用仅我的代码。 若要禁用此设置,请选择 "工具" > 选项" > 调试",然后取消选中 "启用仅我的代码"。

  • 请确保将项目配置为生成可移植的 pdb (这是默认设置),并确保 PBD 与 DLL 位于同一位置。 若要在 Visual Studio 中配置此项,请右键单击该项目,然后选择 "属性" > 生成 > 高级 > 调试信息"。

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

  • 将源复制到目标计算机,并在 Linux 计算机上生成 dotnet build

  • 在 Windows 上生成应用程序,并将生成项目传输到 Linux 计算机。 (生成项目由应用程序本身、它可能依赖的任何运行库以及 .deps.json文件组成。)

 

附加调试器

配置计算机后,在 Linux 计算机上启动该应用程序,然后便可以附加该调试器。

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

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

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

  4. 查找要调试的进程。

    你的代码在唯一进程名称或名为 dotnet 的进程中运行。 若要查找你感兴趣的进程,请检查 " Title " 列,其中显示了该进程的命令行参数。

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

  5. 选择 “附加” 。

  6. 在出现的对话框中,选择要调试的代码类型。 选择 "托管(.Net Core For Unix) "。

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

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

 

改造程序我这里用的是控制台这块方便附加时间等待

 

 

发布

 

 这些文件考进linux(linux 需要安装 netcore环境 )下面是CenterOS 安装方法

其他系统参考这个官方文档

https://docs.microsoft.com/zh-cn/dotnet/core/install/linux-package-manager-ubuntu-1910

sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
sudo yum install aspnetcore-runtime-3.1
sudo yum install dotnet-runtime-3.1

 

 

 运行

dotnet test.dll

这里会暂停住 我们开始远程连接

 

 

打开 vs 

 

 https://docs.microsoft.com/zh-cn/visualstudio/debugger/remote-debugging?f1url=https%3A%2F%2Fmsdn.microsoft.com%2Fquery%2Fdev16.query%3FappId%3DDev16IDEF1%26l%3DZH-CN%26k%3Dk(vs.debug.remote.overview)%26rd%3Dtrue&view=vs-2019

这个连接需要下载安装

 

 有时点击查找无法发现 linux (此处很坑)我弄了很久很久很久。。。。。后来发现 不要点击查找

返回 点击 刷新

 

 

 

 

 

 然后 返回 shell 回车

 

 

进入断点 调试开始。