原理

​ 利用delve工具在本地和远程服务器之间建立一个端口监听,对远程服务器的指定进程进行监控,将收集的运行信息传回本地,再由GoLand进行接收并格式化处理。

步骤

在服务器上安装delve工具

1
go install github.com/go-delve/delve/cmd/dlv

禁止编译器优化和内联

1
2
# 编译代码时加入-gcflags 参数给编译器传递-N -l参数,
go build -gcflags "all=-N -l"

创建debug.sh脚本文件

1
2
3
4
5
6
7
8
9
10
#! /bin/bash
str=`netstat -tunlp | grep 8080`
# str=tcp6 0 0 :::8080 :::* LISTEN 2339327/debugdemo
# 从右边开始,删除第一个 / 号及右边的字符
str2=`echo "${str%%/*}"`
# str2=tcp6 0 0 :::8080 :::* LISTEN 2339327
# 从左边开始删除第一个' '号及左边的所有字符
port=`echo "${str2##* }"`
# 启动调试工具
dlv attach $port --headless --api-version=2 --log --listen=:2345

启动项目后执行脚本

1
./debug.sh

GoLand配置,Run->Debug->Edit Configurations->Go Remote

image-20220702224039221

启动即可

END