写在前面
开发环境是 Windows + GoLand,断断续续整理的,前面的图都没记录,建议直接跳到 Plan C。
Plan A:使用 go remote debug 远程机器的 go 程序
安装 go 环境
1 | go version go1.21.2 linux/amd64 |
切换代理
1 | $ go env -w GOPROXY=https://goproxy.cn,direct |
安装 dlv
1 | $ go install github.com/go-delve/delve/cmd/dlv@latest |
迁移 dlv 命令到 /usr/bin
1 | $ cp $GOPATH/bin/dlv /usr/bin |
使用 dlv 运行 go 程序
1 | nohup sudo dlv --listen=:2345 --headless=true --api-version=2 exec ./ogcli server & |
使用 goland go remote 绑定端口 debug
优点
- 本地环境解耦
缺点
- 启动麻烦
Plan B:使用 go build ssh 部署到远程机器
go build 选择 ssh 并配置节点信息
更新:经测试 GoLand 24.1.4 不需要额外配置和切换 dlv 即可 debug(下述操作可无视)
修改 idea.properties (需要重启 goland)
1 | #dlv.path=C:\\Users\\Rosin\\go\\bin\\dlv.exe |
修改启动报错
原因:goland 远程部署 debug 时是用的本地 dlv 环境
https://youtrack.jetbrains.com/issue/GO-10971/Remote-debugging-dlv-syntax-error#focus=Comments-27-4852093.0-0
优点
- 配置相对简单
缺点
- 每次修改调试后部署时间长
需要修改 dlv 路径,影响本地部署测试
Plan C:使用 sftp + rsync 同步开发(目前使用)
1. 安装 Cygwin + rsync + openssh
Cygwin 在 Windows 上提供大量 GNU 和开源工具实现与 Linux 发行版类似的功能。
安装过程中搜索并挑选两个喜欢的 rsync 和 openssh 版本号
2. 配置 rsync 执行路径
在 Goland 中配置刚刚下载的 rsync 执行路径
3. 配置 sftp
选择之前配置的 SSH,并挑一个根目录作为开发目录
4. 修改运行配置
在运行配置中选择之前配置的 ssh
优点
- 开发调试方便快捷
缺点
- 初次配置麻烦