在 Debian 上跑 Go 程序时遇到日志报错,可以按下面思路和步骤来排查和处理。
Go 的报错通常有几类来源:
# 如果是 systemd 服务
journalctl -u your-service -f
# 如果是前台运行
./your-app
# 如果是 Docker
docker logs -f container_name
panic: runtime error示例:
panic: runtime error: invalid memory address or nil pointer dereference
✅ 处理:
nil map / slice / struct)go run main.go
或用 delve 调试:
dlv debug
cannot find package / module not found示例:
cannot find package "xxx" in any of ...
✅ 处理:
go mod tidy
go mod download
确认:
go env GOPROXY
Debian 建议:
go env -w GOPROXY=https://proxy.golang.org,direct
permission denied示例:
open /var/log/app.log: permission denied
✅ 处理:
ls -l /var/log/
sudo chown -R youruser:youruser /var/log/app
或改用用户目录:
~/logs/app.log
bind: address already in uselisten tcp :8080: bind: address already in use
✅ 处理:
sudo lsof -i:8080
sudo kill -9 PID
如果你用了 sqlite / openssl:
apt install -y gcc libc-dev
CGO 关闭(可选):
CGO_ENABLED=0 go build
示例(systemd):
[Service]
ExecStart=/opt/app/app
StandardOutput=journal
StandardError=journal
你可以贴出:
go version
cat /etc/os-release
如果你愿意,把具体报错内容直接贴出来,我可以一步一步帮你定位并解决。