UOS 开启 VisualStudio 远程调试 .NET 应用之旅

uos,visualstudio,net · 浏览次数 : 0

小编点评

## 使用 VisualStudio 2022 远程调试 dotnet 应用在 UOS 上的配置方法 **1. 设置 UOS 和 Windows 网络** - 确保 UOS 和 Windows 构成局域网网络。 - 可通过 UOS 虚拟机直接连接到 Windows 系统。 **2. 开启开发者模式** - 打开 Windows 终端或命令提示符。 - 输入 `ssh` 并按下 Enter。 - 输入你的 UOS 网络地址和用户名。 - 输入 `sudo su` 并按下 Enter。 - 输入 `vi /etc/ssh/sshd_config` 并按下 Enter。 - 添加以下内容到 `sshd_config` 文件中: ``` PermitRootLogin yes PasswordAuthentication yes ``` **3. 配置 SSH** - 输入以下命令启动 SSH 服务: ``` /etc/init.d/ssh start ``` **4. 使用 VisualStudio 连接** - 启动 Visual Studio。 - 创建一个新的项目或选择现有项目。 - 在项目属性中设置以下选项: - 选择 ".NET Core" 项目类型。 - 选择 "Visual Studio" 作为运行环境。 - 勾选 "Use Visual Studio Remote Debugger"选项。 - 在 "Remote Host Name" 中输入 UOS 的 IP 地址。 - 在 "Port" 中输入 22。 - 点击 "OK" 按钮。 **5. 配置调试** - 在 Visual Studio 中设置远程调试参数。 - 在 "Remote" 面板中选择 "Add Debugger". - 选择 ".NET Core" 类型。 - 选择 "Remote Procedure Host" 作为远程程序。 - 输入以下命令: ``` dotnet-campus synctool --remote-debug --port 5000 ``` **6. 启动调试** - 点击 "Debug" 按钮。 **7. 诊断错误** - 在 Visual Studio 中查看调试窗口。 - 您可以看到远程调试进程的信息和堆栈。 - 请根据错误信息解决问题。

正文

本文记录的是在 Windows 系统里面,使用 VisualStudio 2022 远程调试运行在 UOS 里面 dotnet 应用的配置方法

本文写于 2024.03.19 如果你阅读本文的时间距离本文编写的时间过于长,那本文可能包含过期的知识

我将以我的 UOS 虚拟机作为例子告诉大家如何在 Windows 系统里面,使用 VisualStudio 2022 远程调试运行在 UOS 里面 dotnet 应用。这里的 dotnet 应用不仅包含纯控制台即可实现的 ASP.NET Core 也包括带 GUI 的程序,包括 CPF 、 UNO/MAUI、 Avalonia 等 UI 框架上构建的可运行在 UOS Linux 系统上的应用

准备

第一步是保证 UOS 和 Windows 构成局域网网络,或可直接联通的网络。这一步可自行了解网络配置,只要双方网络能互通即可,挂在一个局域网内相同网段是最好的选择

其次是在 UOS 里面开启开发者模式,开启方法请参阅 如何打开开发者模式?-UOS官方文档

准备工作就此两步,接下来就是进行配置

配置

接着的配置步骤可以分为两大块,分别是 SSH 的开启以及 VisualStudio 的连接

开启 SSH 的支持

默认的 UOS 是没有开启 SSH 的支持的,本文将使用 Tame-complexity 大佬在博客园里面的写的 Linux开启ssh - Tame-complexity - 博客园 博客里面的部分方法开启 ssh 连接,具体步骤如下

先修改sshd服务配置文件,修改此文件需要权限

sudo su
> 输入你的密码
vi /etc/ssh/sshd_config

进入 sshd_config 编辑入以下代码,这里有一个可简化的输入方法,那就是一般此文件里面只是包含大量被注释掉的配置,只需要找到对应的配置,解开注释即可

Port 22
ListenAddress 0.0.0.0
ListenAddress ::

PermitRootLogin yes
PasswordAuthentication yes

相信阅读到这里的伙伴是知道 vim 的基础操作的,如果不了解的话,还请自行查阅一下 vim 如何编辑文件以及如何保存退出哈。简单说就是按下 i 键进入编辑模式,然后使用 esc 键盘退出编辑模式,再输入 :wq 即可完成保存退出

如果是解开注释的话,需要小心 PermitRootLogin 配置项默认是 prohibit-password 的值,需要改为 yes 才对

![](image/UOS 开启 VisualStudio 远程调试 .NET 应用之旅/UOS 开启 VisualStudio 远程调试 .NET 应用之旅4.png)

配置完成之后,使用以下命令了解一下 ssh 的运行情况

/etc/init.d/ssh status

默认新装的 UOS 都是关闭的状态,请使用以下代码进行开启

/etc/init.d/ssh start

开启之后,继续使用 /etc/init.d/ssh status 命令了解一下状态,预期是能够正确开启。如果不能正确开启,再根据错误信息,自行解决

使用 VisualStudio 连接

打开一个 VisualStudio 2022 用于尝试附加调试连接

点击调试里面的附加进程

点击连接类型,切换到 ssh 类型

在连接目标里面输入 UOS 的网络地址,这里支持 IP 或域名,如果开启的 SSH 端口非 22 端口,这里也可以不用输入端口,可以在后续界面再输入。输入完成之后按回车,或者点查找按钮,但查找按钮有时候会不工作,推荐还是按回车好

按下回车之后,可以看到如下界面,输入你的端口和用户名密码,即可点击连接

如果能够看到提示是否要继续连接,请点击 是 按钮

预期是能够看到以下调试界面,如能看到则表示连接成功,如果连接失败,请回到上一步,确定自己配置正确了 SSH 连接

常见的错误就是网络连不通,以及输入错账号密码等

开启调试

接下来将使用 dotnet-campus 开源的下载器项目作为调试的例子

先从可用进程选中将要调试的应用,接着的细节是点击附加到里面,选择手动以及选择 托管(.NET Core for Unix)代码 选项。这是因为默认的 VisualStudio 的自动选择经常不工作

点击调试以下代码类型,然后选择 托管(.NET Core for Unix)代码 即可

如果大家看到附加按钮是禁用状态,也可以尝试以上的选择 托管(.NET Core for Unix)代码 步骤

完成配置之后,即可点击附加按钮,基本都能成功

但如果有遇到以下失败的,提示 未能启动调试适配器,可在输出窗口查看额外的信息

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

看到错误有以下代码

[ERROR] 灾难性故障 (异常来自 HRESULT:0x8000FFFF (E_UNEXPECTED))

也有类似如下错误输出信息

11:34:39:958	未能启动调试适配器“coreclr”。
11:34:39:958	Unable to find debugger script at '/home/lin/.vs-debugger'.
11:34:39:958	
11:34:39:958	
11:34:39:959	初始化日志:
11:34:39:959	Determining user folder on remote system...
11:34:39:959	Checking for existing installation of debugging tools...
11:34:39:959	Downloading debugger launcher...
11:34:39:959	Creating debugger installation folder: /home/lin/.vs-debugger
11:34:39:959	Failed: 无法创建或访问指定的目录 /home/lin/.vs-debugger。
11:34:39:959	参数名: path
11:34:39:959	Unable to find debugger script at '/home/lin/.vs-debugger'.
11:34:39:959	Failed: Unable to find debugger script at '/home/lin/.vs-debugger'.

那就是 VisualStudio 创建 .vs-debugger 文件夹失败

或提示 Failed: The specified directory /home/lin/.vs-debugger could not be created or accessed. 等信息

可使用以下方法解决。回到 UOS 命令行里面,退出 sudo su 状态,使用用户权限创建 ~/.vs-debugger 文件夹

exit

cd ~

mkdir .vs-debugger

以上的 exit 命令仅仅为了退出 sudo su 状态,如果你是新开的控制台,那请不要带上 exit 命令

完成以上命令之后,再次尝试在 VisualStudio 附加调试

预期能够看到正在启动调试适配器界面

看到此界面表示 VisualStudio 正在帮你部署调试环境,首次部署输入比较慢,大概需要在你的 UOS 下载 200MB 的内容

如果等太久,可以进入 ~/.vs-debugger 输入 du -sh 命令查看大小,就可以知道是否正在下载

接下来就进入到了咱熟悉的 VisualStudio 调试 .NET 应用的状态了

试试点击 VisualStudio 的暂停按钮,看看线程和堆栈

此调试方式配合 dotnet-campus 开源的 SyncTool 工具使用更好,通过 SyncTool 将 Windows 上的 VisualStudio 构建输出内容同步到 Linux 设备上,然后使用远程调试方式进行调试

详细请参阅 SyncTool 开源项目

与UOS 开启 VisualStudio 远程调试 .NET 应用之旅相似的内容:

UOS 开启 VisualStudio 远程调试 .NET 应用之旅

本文记录的是在 Windows 系统里面,使用 VisualStudio 2022 远程调试运行在 UOS 里面 dotnet 应用的配置方法 本文写于 2024.03.19 如果你阅读本文的时间距离本文编写的时间过于长,那本文可能包含过期的知识 我将以我的 UOS 虚拟机作为例子告诉大家如何在 W

国产linux系统(银河麒麟,统信uos)使用 PageOffice 国产版在线动态填充 word 文件

PageOffice 国产版 :支持信创系统,支持银河麒麟V10和统信UOS,支持X86(intel、兆芯、海光等)、ARM(飞腾、鲲鹏、麒麟等)芯片架构。 在实际的Word文档开发中,经常需要自动填充数据到Word模板中,以生成动态的Word文档。例如,我们可以根据数据库表中已保存的个人信息,设计

Chrome浏览器不同版本兼容性的验证方法

Chrome浏览器不同版本兼容性的验证方法 背景 上周客户现场有出现使用国产信创设备上面的奇安信浏览器出现兼容性的问题. 开发认为是测试不全面导致. 认为测试应该必须测试过特定浏览器才可以进行说明. 最开始国产设备上面仅能够支持firefox52.3ESR的版本 当时在进行银河麒麟和UOS的兼容适配

UOS可能的来源

1050a 行业版 是基于 阿里的Anolis 1050d 企业版 是基于debian 1050e 欧拉版 是基于华为欧拉 euler

[转帖]uos服务器系统rpm安装oracle 19c

https://blog.csdn.net/u013317172/article/details/126122220 文章目录 一、依赖二、数据库RPM包下载地址三、安装openjdk四、安装oracle-database-preinstall1)compat-libcap1错误

[转帖]关于统信UOS操作系统版本介绍

https://blog.csdn.net/qq43748322/article/details/120196200 当下信创产业发展的如火如荼,今天聊聊统信操作系统UOS 相比较于其它国内品牌操作系统,统信UOS的版本、分支比较多,下面为大家详细说说各UOS版本 目前统信UOS系统主要分为桌面版和

一步步教你在 Windows 上构建 dotnet 系应用的 UOS 软件安装包

本文将详细指导大家如何逐步为 dotnet 系列应用创建满足 UOS 统信系统软件安装包的要求。在这里,我们所说的 dotnet 系列应用是指那些能够在 Linux 平台上构建 UI 框架的应用,包括但不限于 CPF 应用、UNO 应用、Avalonia 应用等

.NET周报 【5月第3期 2023-05-21】

## 国内文章 ### C# 实现 Linux 视频会议(源码,支持信创环境,银河麒麟,统信UOS) https://www.cnblogs.com/shawshank/p/17390248.html 信创是现阶段国家发展的重要战略之一,面对这一趋势,所有的软件应用只有支持信创国产化的基础软硬件设施

[转帖]TiDB 6.1 单机环境 On openEular 2003 SP3

https://tidb.net/book/book-rush/best-practice/other-practice/tidb61-on-openEular2003 背景​ 最近对国产操作系统很感兴趣,也有一些场景需要验证落地,官方支持银河麒麟 V10(X86,ARM),统信 UOS 等国产操作

.NET周报 【7月第1期 2023-07-02】

## 国内文章 ### C# 实现 Linux 视频聊天、远程桌面(源码,支持信创国产化环境,银河麒麟,统信UOS) https://www.cnblogs.com/shawshank/p/17420469.html 园子里的有朋友在下载并了解了《[C# 实现 Linux 视频会议(源码,支持信创环