使用 dlv + GoLand 远程调试 Go 程序
2012 年 10 月 25 日
前言
在开发/排查过程中, 偶尔会遇到一些仅在正式环境才能复现的BUG, 但由于本地不能访问正式环境, 只能用有限的方式对问题进行 Debug, 例如添加日志等原始方法, 效率过低. 因此推荐放弃这种方式, 借助IDE和Delve进行远程调试, 完成对BUG的快速排查与修复.
准备
-
一台可以访问正式环境的服务器.
-
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/ ]