Goland远程开发与远程调试

寒江蓑笠翁大约 5 分钟技术日志golanddlv远程开发

Goland远程开发与远程调试

本文讲解了如何使用Goland的远程开发和远程调试功能


最近的一个项目是要部署在Linux上运行,但我习惯了在Windows上进行开发,许多开发工具都是在Windows上,所以远程开发和远程调试非常有必要,代码依旧在本地写,只是编译和部署放在Linux上。先说一下我的环境:

本地环境:Windows10,go1.20.2 dlv1.20.2

远程环境:ubuntu20LTS(虚拟机),go1.20.4,dlv1.20.2

提示

虽然本文Linux用的是虚拟机,但是放在云服务器上一样使用。

Go Build 配置

首先在Goland运行配置里新建一个Go Build配置,然后选择Run On SSH

输入Host和要登录的用户名

登录成功后Goland会尝试执行which go命令,也许会失败,不过这并不影响,后面自己指定就行。再然后才是远程开发的重要配置

  • Project path on target:该目录是后续操作的项目根目录,后续Goland自动上传的文件都会位于该目录下
  • Go Executable:go二进制文件,该二进制文件并不是自己项目的二进制文件,而是go源代码的二进制文件,通常位于$GOROOT/bin/目录下
  • GOPATH:不需要多做解释
  • Project sources directory:Goland在编译时会先将源码上传到远程服务器上,该目录就是源码的指定位置,如果不填的话就会在项目根目录下随机生成目录,看起来很烦。
  • Compiled exectuables directory:编译完成后二进制文件存放的文件夹。

完成后如下

image-20230515172036551
image-20230515172036551

然后再Go Build中记得勾选 Build on remote target,这样上面的配置才会生效

Go Remote配置

在运行配置中新建Go Remote

然后填写你的调试服务器IP和端口

调试服务器就是dlv,如果在远程服务器中已经安装好了go环境,直接执行以下命令即可安装dlv

go install github.com/go-delve/delve/cmd/dlv@latest

使用dlv命令运行调试服务器

dlv --listen=:2345 --headless=true --api-version=2 --accept-multiclient exec ./dst_linux

每一个参数是什么作用可以在github上了解,exec参数后跟二进制文件的路径

开发流程

上述所有配置完毕后,开发流程就是:

  1. 本地编写代码
  2. Goland更新远程服务器的源代码并编译
  3. 运行dlv调试服务器
  4. 本地运行Go Remote进行调试

这样一来远程开发和远程调试的问题就都解决了,非常nice,远程调试起来也跟本地调试几乎没什么区别。

上次编辑于:
贡献者: 246859