使用 dlv + GoLand 远程调试 Go 程序

前言

在开发/排查过程中, 偶尔会遇到一些仅在正式环境才能复现的BUG, 但由于本地不能访问正式环境, 只能用有限的方式对问题进行 Debug, 例如添加日志等原始方法, 效率过低. 因此推荐放弃这种方式, 借助IDE和Delve进行远程调试, 完成对BUG的快速排查与修复.

准备

  1. 一台可以访问正式环境的服务器.

  2. IDE, 这里推荐使用  Jetbrains 家的IDE, 以下用  GoLand 为例.

步骤

1. 安装Delve

在服务器上安装Delve.

官网: https://github.com/derekparker/delve, 安装方法请参照官方wiki.

2. 查看IDE说明

程序的编译和启动尽量按照IDE的提示说明进行. 在 GoLand 中点击菜单栏 Run -> EditConfigurations -> + -> GoRemote . 我们将看到如下界面. 中间为编译及启动说明.

3. 编译你的程序

根据IDE说明, 在服务器上编译你的程序, 必须添加 -gcflags 参数, 其他随意.

  • Go 1.10 及以上

  • Go 1.9 及以下

4. 使用dlv启动你的程序

根据IDE说明,  在服务器上使用dlv启动编译好的程序.

如果程序需要启动参数, 则在后面添加 -- .

5. 本地配置Debug

在刚刚的 EditConfigurations 中添加 GoRemote 并在Host和Port中配置服务器IP地址和端口号.

完成配置后, 我们就可以同本地 Debug 一样, 享受远程 Debug 了.

参考资料:Go语言远程调试方法 [ https://linkscue.com/2018/09/07/2018-08-29-golang-remote-debug/ ]