说明
dotnet开发工具VisualStudio的远程调试方式,MSDN上面也是有介绍,只是单介绍了使用方法,必要的调试环境部署并没有说明。这里完整的介绍下VisualStudio下远程调试dotnet程序的整个过程。
环境准备
安装ssh
先检查是否已经安装了并开启了SSH服务和SFTP

安装vsdebugger(以VS2022为例,2019的话,将下方2022替换为2019即可)
1. 需要先下载安装脚本,运行安装脚本时会下载调试环境的安装包,但是下载的会非常慢,所以我就直接把安装脚本和环境部署包统一先下载好了,共有x64、Arm64两个平台,可以在附件中下载
2. 将安装脚本GetVsDbg.sh上传到目标主机的任意位置。附件中的脚本文件已经注释了downoad方法内下载的逻辑,只会执行安装步骤
3. 根据自己使用的VisualStudio版本和目标主机平台,将环境部署包上传到常用账户的根目录的.vs-debugger目录下。如使用的VisualStudio 2022,则放到/home/nvidia/.vs-debugger/vs2022下
4. 转到GetVsDbg.sh所在的位置,执行命令安装调试环境
sh GetVsDbg.sh -v vs2022 -l /home/nvidia/.vs-debugger/vs2022
5. 安装好环境后,需要将调试工具复制一份到root账户下,否则无法在root账户下远程调试
sudo cp -r /home/nvidia/.vs-debugger /root/
开放root账户的ssh远程访问
1. 如果目标程序运行在root权限下,则远程调试时需要登录root账户,所以root账号的远程访问限制必须先打开
2. 开启root账户ssh远程访问权限
a. 打开ssh配置文件
sudo vim /etc/ssh/sshd_config
b. 找到PermitRootLogin,去掉前面的#,并将值修改为yes
c. 设置root账户密码
root账户一般是没有密码的,但是我们远程调试时,会要求输入密码,否则无法访问目标主机
执行命令设置root命令: sudo passwd
调试过程
发布Debug包,并更新到目标系统上(车端)
注:仅支持Debug包的调试,Release包无法调试,打不上断点
启动车端程序
VisualStudio中选择“附加” -> “附加到进程”
连接类型选择“SSH”,连接目标输入目标系统的账户和IP地址
注:如果目标主机上程序是以root账户运行的,需要将nvidia修改为root
点击右下角的刷新按钮,即可加载出目标主机上的进程。如果列表中找不到目标进程,可以将左侧的显示所有用户的进程勾选上,会显示更多的进程
注:对于使用dotnet指令启动的程序,进程名称都是dotnet,需要通过标题区分启动的实际程序
找到目标进程并选中后,下方的附件按钮,在弹出的窗口中选择托管,然后点击确定,即可开始远程调试
VSCode 安装下图: