树莓派 Linux VS code 远程断点调试 .net 6.0 保姆级教程
入手Linux有一段时间了,之前会写点C#,做的大多也是单片机的开发,对于能够断点调试那是成为了代码开发的一个执念,加上微软也在大力推广.net,如何利用X86的高性能编译来断点调试linux设备上的.net程序,就困扰了一段时间,通过看国内外大佬的教程,这里总结了以下一个不算非常严谨的教程,希望能够帮助大家解决一点疑惑。
安装树莓派系统或者其他系统
这里我们主要以树莓派系统为例子,其他的Linux按理说是可以完全复制的。
官方Raspbian
安装完系统之后开启SSH,方便后面进行调试。
树莓派开启ssh教程
感谢这位大佬出的教程。
树莓派 net 6.0 及 调试器 安装
!!!这里还是建议安装32位系统64位系统也是可以安装的。
这里首先需要换个树莓派的源加快下载速度
点击->>树莓派换源加快下载速度
这里参考夸克之书的教程 https://www.quarkbook.com/?p=683 感谢大佬的教程
安装.Net Core依赖
$ sudo apt install libunwind8 libunwind8-dev gettext libicu-dev liblttng-ust-dev libcurl4 libcurl4-openssl-dev libssl-dev uuid-dev unzip libgdiplus libkrb5-3
下载 net 6.0 SDK
可自行下载版本 https://dotnet.microsoft.com/download/dotnet 替换wget 后面地址就可以了
64位系统
$ wget https://download.visualstudio.microsoft.com/download/pr/084d5037-7dee-4654-b91a-fe303fa62d74/553744c6fcf2ed1128e40fa9f6cd4516/dotnet-sdk-6.0.100-preview.7.21379.14-linux-arm64.tar.gz
32位系统
$ wget https://download.visualstudio.microsoft.com/download/pr/501903b0-5e47-4b76-a965-fabafcd95ff5/d6f197c99957b356ee8f0c6e2304ff09/dotnet-sdk-6.0.100-preview.7.21379.14-linux-arm.tar.gz
创建dotnet文件夹
$ mkdir dotnet
移动并解压
$ mv dotnet-sdk-6.0.100-preview.7.21379.14-linux-arm64.tar.gz dotnet
$ cd dotnet/
$ tar xvf dotnet-sdk-6.0.100-preview.7.21379.14-linux-arm64.tar.gz
移动dotnet到user/local下面
$ cd ..
$ sudo mv dotnet /usr/local/
$ cd /usr/local/
创建软连接
$ sudo ln -s /usr/local/dotnet/dotnet /usr/local/bin
测试
$ dotnet --version
打印 net 版本表示安装成功
为 linux-arm(目标计算机)安装调试器
$ curl -sSL https://aka.ms/getvsdbgsh | bash /dev/stdin -r linux-arm -v latest -l ~/vsdbg
显示如下信息表示安装成功
Info: Last installed version of vsdbg is '17.0.10712.2'
Info: VsDbg is up-to-date
Info: Using vsdbg version '17.0.10712.2'
Using arguments
Version : 'latest'
Location : '/home/pi/vsdbg'
SkipDownloads : 'true'
LaunchVsDbgAfter : 'false'
RemoveExistingOnUpgrade : 'false'
Info: Skipping downloads
接着开启树莓派共享文件夹,也是这次能够实现高性能调试的关键之一。
安装 Samba
sudo apt-get install samba samba-common-bin
在树莓派桌面创建文件夹名为mytest
配置 Samba
sudo nano /etc/samba/smb.conf
在文件末尾加上如下内容,其中/home/pi/Desktop/mytest 为共享文件夹目录
[public]
comment = public storage
path = /home/pi/Desktop/mytest
valid users = pi
read only = no
create mask = 0777
directory mask = 0777
guest ok = no
browseable = yes
其中 valid users 即 pi 为有效用户,还需要添加其到 Samba 中
sudo smbpasswd -a pi
重启 samba 以生效配置
sudo samba restart
Windows上映射这个文件夹
至此树莓派设置完成
windows软件安装
windows上同样安装(点击即可下载,安装最好都是默认安装,不要改安装位置,熟悉远离后可自行修改)
->>net 6.0
->>VS code
->>pytty
->>git
PuTTY需要设置免输密码自动登录Linux
下面教程中需要在/home/pi 下新建.ssh文件夹
$ cd /home/pi
$ mkdir .ssh
同样感谢这位大佬的教程,->>具体教程这里给出链接
打开创建的共享盘
创建文件夹 vsnet
进入vsnet文件夹,在空白的地方按住shift 点击右键,选择 “在此处打开 Powershell 窗口(s)”
输入命令
dotnet new console -n vsnet
打开VS code,选择文件,打开文件夹,选择共享盘根目录下的vsnet文件夹。
这里需要安装一个C#的扩展
打开这个文件,按F5,会提示创建相关文件
选择.NET Core
打开launch.json,这里需要做一些配置,图下给出的代码,直接复制过去。
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": ".NET Core Launch (console)",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
"program": "/home/pi/Desktop/mytest/vsnet/vsnet/bin/Debug/net6.0/vsnet.dll",
"args": [],
"cwd": "/home/pi/Desktop/mytest/vsnet/vsnet/bin/Debug/net6.0",
"stopAtEntry": false,
"console": "internalConsole",
"pipeTransport": {
"pipeCwd": "${workspaceFolder}",
"pipeProgram": "c:\\Program Files\\PuTTY\\plink.exe",
"pipeArgs": [
"-i",
"c:\\Users\\zf\\my001.ppk",
"pi@192.168.1.41"
],
"debuggerPath": "/home/pi/vsdbg/vsdbg"
}
}
]
}
至此按下F5 即可调用高性能的windows电脑编译程序,并可以断点调试树莓派上的.net 程序。
运用共享文件夹的目的是为了省略从电脑拷贝文件到树莓派上的这一过程。
这里贴上GitHub上的说明 https://github.com/OmniSharp/omnisharp-vscode/wiki/Remote-Debugging-On-Linux-Arm
如有疏漏之处,可留言提出。