在 CentOS 上调试 Golang 程序,常见方式有以下几种,按“从简单到专业”给你梳理一下:
package main
import "fmt"
func main() {
fmt.Println("debug info")
}
或用 log:
import "log"
log.Println("debug")
✅ 适合:简单问题、线上环境
CentOS 需要先有 Go 环境
go install github.com/go-delve/delve/cmd/dlv@latest
如果 dlv 不在 PATH:
export PATH=$PATH:$(go env GOPATH)/bin
验证:
dlv version
dlv debug main.go
进入调试界面后常用命令:
break main.main # 打断点
continue # 运行
next # 单步
print varName # 打印变量
locals # 本地变量
dlv attach <pid>
适合:
go build 出来的程序dlv exec ./app --headless --listen=:2345 --api-version=2
本地(VS Code / GoLand)连接:
localhost:2345
launch.json 示例{
"version": "0.2.0",
"configurations": [
{
"name": "Launch",
"type": "go",
"request": "launch",
"mode": "debug",
"program": "${workspaceFolder}"
}
]
}
CentOS 上需要:
dlvGo 对 GDB 支持有限(goroutine、channel 不友好):
gdb ./app
⚠️ 仅适合 Cgo 或底层问题
which dlv
没有就:
export PATH=$PATH:$(go env GOPATH)/bin
setenforce 0
(生产不建议长期关)
firewall-cmd --add-port=2345/tcp --permanent
firewall-cmd --reload
| 场景 | 推荐方式 |
|---|---|
| 本地开发 | VS Code + Delve |
| 线上问题 | dlv attach |
| 微服务 | headless dlv |
| 快速排查 | log |
如果你愿意,可以告诉我:
我可以给你更精确的配置示例。