在 Ubuntu 上排查 Golang 错误,通常可以按下面这套思路来,从编译错误、运行错误、环境配置、日志与调试几个方面入手。
go version
如果提示 command not found:
sudo apt install golang-go
# 或安装官方版本
go env
重点关注:
GOPATHGOROOTGO111MODULEGOPROXY常见 Ubuntu 问题:
export GOPROXY=https://proxy.golang.org,direct
go build -x
go build -v
包找不到
cannot find package
解决:
go mod tidy
go get xxx
依赖版本冲突
go mod verify
go clean -modcache
go run main.go
Go 的 panic 会打印:
示例:
panic: runtime error: invalid memory address
重点看:
goroutine 1 [running]:
main.main()
/home/user/main.go:10 +0x45
import "log"
log.Println("debug info")
安装:
go install github.com/go-delve/delve/cmd/dlv@latest
调试:
dlv debug main.go
常用命令:
break main.maincontinueprint varsudo chmod +x binary
sudo lsof -i:8080
sudo ufw status
ps aux | grep go
journalctl -u your-service
top
htop
如果你愿意,可以把下面信息发我:
go versiongo envlsb_release -a)我可以直接帮你定位具体错误原因。