admin 发表于 2022-7-28 09:04:05

Arm32进行远程调试

Arm 32bit Goland 远程调试
32位支持issue
Goland配置Go remote支持文档
https://mojotv.cn/go/golang-remote_debug

Delve
官方版本delve并不支持arm-32位,直接安装会提示架构不符合

架构判定文件为https://github.com/go-delve/delve/blob/master/pkg/proc/native/support_sentinel.go

个人水平有限,没有太明白这里的go build构建约束,欢迎大佬在评论区解读

注:第二行是老式的构建约束写法,大家看第一行就行了
// This file is used to detect build on unsupported GOOS/GOARCH combinations.

//go:build (!linux && !darwin && !windows && !freebsd) || (linux && !amd64 && !arm64 && !386) || (darwin && !amd64 && !arm64) || (windows && !amd64) || (freebsd && !amd64)
// +build !linux,!darwin,!windows,!freebsd linux,!amd64,!arm64,!386 darwin,!amd64,!arm64 windows,!amd64 freebsd,!amd64

package your_operating_system_and_architecture_combination_is_not_supported_by_delve


在issue下找到该仓库,实装后可以正常运行,
https://github.com/puppywang/delve

下载后进行安装make install

启动
Goland远程启动程序A
## goland 终端打印
GOROOT= #gosetup
GOPATH=/root/go #gosetup
/root/Env/go/bin/go build -i -o /root/**/executables-7agJx2Zna4/___11_linux demo/cmd/demo #gosetup
go: -i flag is deprecated
/root/****/executables-nq690aaBJS/___11_linux


## 查下进程id,后面用
ps axu|grep ___11_linux

获得`exe_PID`

远程终端启动dlv
#PID 为程序A进程
dlv --listen=:5604 --headless=true --api-version=2 --check-go-version=false attach 获得`exe_PID`

//TODO 补充命令参数作用
Goland配置Go remote
Host 远程部署IP
port 5604(上面)

然后即可进行远程调试
页: [1]
查看完整版本: Arm32进行远程调试