命令行上对 Go 程序进行调试在变量打印等方面的友好性相比图形界面还是要差很多,而且 dlv 相比 gdb 还缺少 tui 窗口,在源代码查看方面更是让人着急。

GoLand 实际上也是调用的 dlv 进行调试:

1
2
3
~$ ps aux | grep dlv
runsisi 406148 0.0 0.1 940732 11860 tty2 Sl+ 08:04 0:00 /home/runsisi/software/GoLand-2019.1/plugins/go/lib/dlv/linux/dlv --listen=localhost:39071 --headless=true --api-version=2 exec /tmp/___hcl --
runsisi 406735 0.0 0.0 16192 980 pts/4 R+ 08:30 0:00 grep --color=auto dlv

GoLand 配置

启用 go mod:

创建 Go Build 类型的配置:

配置参数如下:

其中 Run kind 选择 PackagePackage path 是基于 module 前缀的完整 main package 所在目录;Working directory 是 go module 根目录(即 go.mod 所在目录)。

调试运行

调试运行效果如下: