GoLand+Delve(dlv) 远程调试
简介GoLand+Delve(dlv) 远程调试
GoLand+Delve(dlv) 远程调试
参考:https://yq.aliyun.com/articles/57578
服务器上安装dlv
Centos按时dlv
git clone https://github.com/go-delve/delve.git $GOPATH/src/github.com/go-delve/delve
cd $GOPATH
go install github.com/go-delve/delve/cmd/dlv
创建软链接
ln -s $GOPATH/bin/dlv /usr/local/bin/dlv
查看版本
[root@localhost bin]# dlv version
Delve Debugger
Version: 1.4.0
Build: $Id: 67422e6f7148fa1efa0eac1423ab5594b223d93b $
示例代码
新建文件test.go
package main
import (
"fmt"
"time"
)
const myDate = "2019-05-30 15:13"
var (
Aa = 81
Bb = 82
)
func main() {
fmt.Println("myDate:", myDate)
func1()
}
func func1() {
a := 61
b := 62
i := 0
for true {
fmt.Println("fmt:", i, a, b, Aa, Bb)
i++
a += 2
Aa += 3
time.Sleep(time.Second)
}
}
编译成linux可执行文件
SET CGO_ENABLED=0
SET GOARCH=amd64
SET GOOS=linux
go build test.go
编译完成后会生成一个test文件,将文件上传到服务器上并添加可执行权限并允许:
[root@localhost xthk_online_live_go_api]# chmod +x test
[root@localhost xthk_online_live_go_api]# ./test
myDate: 2019-05-30 15:13
fmt: 0 61 62 81 82
fmt: 1 63 62 84 82
查询运行的进程,并运行dlv监听:
[root@localhost xthk_online_live_go_api]# ps -ef|grep test
root 15380 12630 0 17:05 pts/2 00:00:00 ./test
root 15389 7712 0 17:05 pts/1 00:00:00 grep --color=auto test
[root@localhost xthk_online_live_go_api]# dlv attach 15380 --headless --listen=:2345 --api-version=2 #15380是test的进程ID
API server listening at: [::]:2345
上面介绍的是将本地编译后的文件进行调试,如果我们直接调试服务器上的golang程序,还可以使用debug模式运行:
[root@localhost xthk_online_live_go_api]# dlv debug --headless --listen=:2345 --api-version=2 test.go
API server listening at: [::]:2345
或者直接运行可执行文件:
[root@localhost xthk_online_live_go_api]# dlv exec --headless --listen=:2345 --api-version=2 ./test
API server listening at: [::]:2345
配置Goland
1、Run
2、Edit Configurations
3、左上角加号
4、Go Remote
5、设置调试名称、配置Host和Port,这个是服务器的地址和dlv监听的端口
6、保存
调试
1、Run
2、Debug
3、选择上面配置的远程调试名称,调试开始
快捷键
1、F9:切换断点
2、F8:继续执行