1 vscode配置golang远程开发调试环境
1.1 golang远程开发应用场景
在golang项目开发中,特别是需要跨平台的项目时,很多时候需要在远程环境下进行开发、编译、调试,比如嵌入式linux场景,我们在windows下开发好的代码,可能需要在linux环境运行,需要在此环境下编译程二进制文件,再运行,如果遇到问题,很多时候只能通过izhi来定位,如果要验证修改的代码,可能还需要先上传到linux开发环境,进行编译->运行->根据日志再定位的过程,特别繁琐,这里vscode提供了强大的远程开发/编译/断点调试等功能,这里介绍下golang的远程开发调试环境搭建方式。
1.2 远程开发调试环境搭建
我的vscode版本如下:
我的vscode版本比较新,配置远程环境非常简单,步骤如下:
- 安装remote-ssh插件
选择vscode左侧侧边栏extensions菜单,搜索remote-ssh插件并安装插件
插件安装完成后,会在左侧侧边栏出现remote explore菜单
- 添加远程目标主机
远程目标及假设为linux系统,已经安装好go环境,并下载好最新的代码(代码目录:/home/goproj/test),并开通了ssh(以ssh地址为10.45.12.43为例),点击remote explore菜单,点击ssh targets旁边的”+”图标(addnew)来添加目标主机,如下图:
点击添加后会选择目标主机配置参数保存文件,选择后会把目标主机ssh信息添加到配置文件,添加命令为
ssh root@10.45.12.43
,期间会让选择平台,我们选择linux即可。
- 连接目标主机
在新添加的目标主机上右键,连接主机,这里可选择在当前窗口连接,还是新打开一个vscode窗口连接,我这里选择当前窗口
连接时会要求输入密码,我们正确的输入ssh密码即可连接成功:
- 打开目标主机上的go代码
和打开本地文件一样,我们选择左侧侧边栏的explore菜单,打开远端文件夹,然后会弹出远端目标机器的目录列表,选择我们go工程所在的目录,此时还会让输入密码,输入密码即可打开远程代码目录,如果目录中已存在.code-workspace工程文件,打开此文件,右下角有openworkspace,点击即可重新以工作空间的方式打开:
- 远端机器安装go插件及工具
因为要做远端进行调试和运行,需要在远端服务器上安装vscode安装go插件及工具集,查理直接可以在本地vscode中安装,在extensions中搜索go,额在插件下方有一行:installing in ssh:10.45.12.43,点击即可在远端目标机器安装go插件,不安装的话,打开go文件vscode也会提示安装,安装提示安装也可。
插件安装完成之后,需要安装go的工具集,和本地一样,直接按F1,命令中输入go,选择go:install/update tools->全选->ok,进行tools安装,如果提示安装失败,需要在远端重新配置下go的代理,直接在vscode中打开terminal(此终端直接时通过ssh连接到了远端机器),输入命令:
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct
再重新安装tools
1.3 远程debug运行配置
这里代码时远端代码,修改代码后,如果要在本地进行远程debug调试,需要配置launch,这里我把launch配置整合到了.code-workspace,配置如下:
test.code-workspace
{
"folders": [
{
"path": "."
}
],
"settings": {},
"launch": {
"version": "0.2.0",
"configurations": [
{
"name": "golang",
"type": "go",
"request": "launch",
"mode": "auto",
//当运行单个文件时{workspaceFolder}可改为{file}
"program": "${workspaceFolder}",
"env": {},
"args": [
"-pprof",
//"-deamon"
]
}
]
}
}
配置完成后即可直接f5运行,可断点调试,也可运行。
由于未配置ssh免密访问,经常需要输入密码,也可在配置文件中加入公钥地址进行免密访问,这里可以自行百度。
这里通过remote-ssh连接到远端后,其终端也是直接ssh到远端的,也可作为ssh终端,在远端执行go的相关命令