1 vscode配置golang远程开发调试环境

1.1 golang远程开发应用场景

在golang项目开发中,特别是需要跨平台的项目时,很多时候需要在远程环境下进行开发、编译、调试,比如嵌入式linux场景,我们在windows下开发好的代码,可能需要在linux环境运行,需要在此环境下编译程二进制文件,再运行,如果遇到问题,很多时候只能通过izhi来定位,如果要验证修改的代码,可能还需要先上传到linux开发环境,进行编译->运行->根据日志再定位的过程,特别繁琐,这里vscode提供了强大的远程开发/编译/断点调试等功能,这里介绍下golang的远程开发调试环境搭建方式。

1.2 远程开发调试环境搭建

我的vscode版本如下:
版本

我的vscode版本比较新,配置远程环境非常简单,步骤如下:

  1. 安装remote-ssh插件

选择vscode左侧侧边栏extensions菜单,搜索remote-ssh插件并安装插件
ssh插件

插件安装完成后,会在左侧侧边栏出现remote explore菜单

  1. 添加远程目标主机

远程目标及假设为linux系统,已经安装好go环境,并下载好最新的代码(代码目录:/home/goproj/test),并开通了ssh(以ssh地址为10.45.12.43为例),点击remote explore菜单,点击ssh targets旁边的"+"图标(addnew)来添加目标主机,如下图:

ssh root@10.45.12.43
  1. 连接目标主机

在新添加的目标主机上右键,连接主机,这里可选择在当前窗口连接,还是新打开一个vscode窗口连接,我这里选择当前窗口
connect

连接时会要求输入密码,我们正确的输入ssh密码即可连接成功:

connect

  1. 打开目标主机上的go代码

和打开本地文件一样,我们选择左侧侧边栏的explore菜单,打开远端文件夹,然后会弹出远端目标机器的目录列表,选择我们go工程所在的目录,此时还会让输入密码,输入密码即可打开远程代码目录,如果目录中已存在.code-workspace工程文件,打开此文件,右下角有openworkspace,点击即可重新以工作空间的方式打开:

1
2

  1. 远端机器安装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的相关命令