Go 程序在 Debian 上“崩溃”原因很多,不一定是 Go 本身的问题。下面按常见原因 → 排查方法给你一个系统清单,你可以对照看是哪一种。
如果你的程序用了 CGO 或依赖 C 库:
./your_program: error while loading shared libraries: libxxx.so: cannot open shared object file
原因
.so解决
ldd your_program
缺什么装什么,例如:
apt install libc6-dev
或者完全静态编译:
CGO_ENABLED=0 go build -o app .
在 ARM 服务器或树莓派上很常见。
症状
cannot execute binary file: Exec format error
检查
uname -m
file your_program
解决 交叉编译:
GOARCH=arm64 GOOS=linux go build -o app .
Debian 服务器内存小,Go 默认会用很多内存。
症状
dmesg 里有:Out of memory: Kill process xxx
排查
dmesg | grep -i oom
free -h
解决
GOGCGo 程序 panic 会直接退出。
症状
panic: runtime error: invalid memory address
排查
recoverlog.Fatal 替代直接 panic症状
permission denied
常见情况
/var/log解决
setcap cap_net_bind_service=+ep app
用 systemd 运行时:
PATH 不同排查
journalctl -u your_service -n 100
例如:
/etc/localtime./app
journalctl -xe
dmesg
dmesg | grep -i kill
ldd app
CGO_ENABLED=0 go build -o app .
你可以贴出以下任意内容:
dmesg 或 journalctl 输出go versioncat /etc/os-release)我可以直接告诉你具体是哪一类崩溃以及怎么修。