目录
- 背景
- 软件版本
- 环境搭建
- 安装`Golang`环境
- 安装`dlv`环境
- 启动远程环境
- Goland 连接远程环境
- 参考
背景
最近在做 Operator
的二次开发,开发语言是Golang
。Operator
开发时候需要用到k8s
集群,遗憾的是k8s
编排的容器网络与本地网络不通,无法直接进行debug
。k8s
调整网络的方式比较麻烦,曲线救国在 k8s node
上安装Golang
环境,本地进行远程debug
。
Golang
远程debug
需要借助dlv
工具。
软件版本
Golang 1.19.2
dlv 1.9.1
Goland 2020.3.5
环境搭建
安装Golang
环境
wget https://golang.google.cn/dl/go1.19.2.linux-amd64.tar.gz
tar -C /usr/local -zxvf go1.19.2.linux-amd64.tar.gz
vi ~/.bash_profile
#在最下面添加
export GOROOT=/usr/local/go
# export GOPATH=/home/go ## GOPATH 可以不加
export PATH=$PATH:$GOROOT/bin #:$GOPATH/bin
export GOPROXY="https://goproxy.io"
source ~/.bash_profile
安装dlv
环境
# 这里采用的是git clone 的方式,也可离线下载release版本。
# 任意目录
git clone https://github.com/derekparker/delve.git
cd delve/cmd/dlv/
go build
go install
# 可执行程序为 `cmd/dlv/dlv`
# 可以将其拷贝到 `/usr/bin`中, 也可以创建软连接的方式
启动远程环境
# 进入项目目录
dlv debug --headless --listen=:2345 --api-version=2
# 此时控制台会阻塞
# 这个命令忘记也没关系,goland 远程连接的地方有提示
Goland 连接远程环境
从Templates 中创建一个 Go Remote 启动即可。
注意:
Goland
中的代码要跟远程debug
的代码一致,否则调试结果不准确,通过git
进行代码同步是个不错的选择。dlv
启动参数--accept-muticlient
可不加,加上可能会有其他问题。
参考
- goland远程调试
- Go Lang远程调试 with Goland
- Go以及调试工具dlv安装及使用
- dlv官方仓库
- Golang 官方网站