go远程调试dlv+goland

go远程调试dlv+goland

windows10 go开发, 无法进行cgo调试, 像kafka-go 这种就无法跑起来, 用远程调试就能解决问题了

1. 远程机器设置

1.1 安装dlv

$ go install github.com/go-delve/delve/cmd/dlv@latest 
$ dlv version
Delve Debugger
Version: 1.8.2
Build: $Id: dbb493ec14d1e7753504d016b1e1ef1665b75b16 $

1.2 编译程序

$ go build -gcflags=all="-N -l"  -o conf_dev/

-gcflags=all=“-N -l”

-N参数代表禁止优化, -l参数代表禁止内联,
go在编译目标程序的时候会嵌入运行时(runtime)的二进制,
禁止优化和内联可以让运行时(runtime)中的函数变得更容易调试.

1.3 dlv 运行并监听程序

# dlv --listen=:30017  --headless=true --api-version=2 --accept-multiclient --check-go-version=false  \
 exec /data/dev/idcdb/Cmdb/conf_dev/Cmdb -- -config=/data/dev/idcdb/Cmdb/Cmdb.conf 
# ps -ef |grep Cmdb

17:28 pts/0 00:00:00 dlv --listen=:30017 --headless=true --api-version=2 --accept-multiclient --check-go-version=false exec /data/dev/idcdb/Cmdb/conf_dev/Cmdb – -config=/data/dev/idcdb/Cmdb/Cmdb.conf
root 23111 23105 0 17:28 pts/0 00:00:00 /data/dev/idcdb/Cmdb/conf_dev/Cmdb -config=/data/dev/idcdb/Cmdb/Cmdb.conf
root 23122 12716 0 17:28 pts/1 00:00:00 grep --color=auto Cmdb

2 . 开发机goland操作

2.1 代码自动上传更新

go远程调试dlv+goland_第1张图片

2.2 goland 的 Go Remote设置

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

go远程调试dlv+goland_第3张图片

每次点击"Debug" 都要 确保 远程运行“dlv --listen” (见上述1.3 dlv 运行并监听程序 )

你可能感兴趣的:(go开发,golang)