在 CentOS 上调试 Golang 程序,常用有几种方式,从简单到专业逐步介绍:
fmt.Println(不推荐长期用)fmt.Println("debug:", x)
✅ 简单
❌ 侵入代码、效率低
dlv(Delve,Go 官方推荐调试器)✅✅✅# 安装 git 和编译环境(如果没装)
sudo yum install -y git golang
# 安装 dlv
go install github.com/go-delve/delve/cmd/dlv@latest
# 确认安装
~/go/bin/dlv version
如果
go install失败,可手动:
git clone https://github.com/go-delve/delve.git
cd delve
go install ./cmd/dlv
dlv debug main.go
常用命令:
break main.main # 打断点
continue # 运行
next # 单步
step # 进入函数
print x # 打印变量
locals # 查看局部变量
quit
dlv exec ./myapp
服务端(CentOS)
dlv exec --listen=:2345 --headless=true --api-version=2 ./myapp
本地(VS Code / GoLand)
ip:2345dlv debug --headless --listen=:2345 --api-version=2 --accept-multiclient main.go
launch.json{
"name": "Remote",
"type": "go",
"request": "attach",
"mode": "remote",
"remotePath": "/root/project",
"port": 2345,
"host": "服务器IP"
}
log 或 zaplog.Printf("x=%d", x)
生产建议:
zaplogrusgo tool pprof http://localhost:6060/debug/pprof/profile
dlv 报错 could not launch process解决:
sudo sysctl -w kernel.yama.ptrace_scope=0
sudo firewall-cmd --add-port=2345/tcp --permanent
sudo firewall-cmd --reload
| 场景 | 工具 |
|---|---|
| 本地调试 | dlv debug |
| 服务器调试 | dlv exec --headless |
| IDE 调试 | VS Code + dlv |
| 线上问题 | pprof + 日志 |
如果你愿意,可以告诉我:
我可以直接给你一套可复制的配置。