在 Ubuntu 上用 Go(Golang)进行编译和调试,常见做法主要分为:使用 Delve 调试器(推荐)、用 GDB(不推荐但可用)、以及日志/单元测试方式。下面按实用顺序说明。
sudo apt update
sudo apt install golang-go
# 或官方版本
# https://go.dev/dl/
go version
go build -o app main.go
./app
Go 默认已包含调试信息,但建议关闭优化,方便调试:
go build -gcflags="all=-N -l" -o app main.go
-N:关闭优化-l:关闭内联go install github.com/go-delve/delve/cmd/dlv@latest
确保 ~/go/bin 在 PATH:
export PATH=$PATH:~/go/bin
dlv debug main.go
进入交互界面:
(dlv) break main.main
(dlv) continue
(dlv) next
(dlv) print variableName
(dlv) quit
dlv exec ./app
dlv exec --headless --listen=:2345 --api-version=2 ./app
VS Code launch.json 示例:
{
"name": "Remote",
"type": "go",
"request": "attach",
"mode": "remote",
"port": 2345,
"host": "127.0.0.1"
}
Go 对 GDB 支持有限,尤其 goroutine 调试较差。
gdb ./app
(gdb) break main.main
(gdb) run
(gdb) bt
fmt.Printf("%+v\n", obj)
dlv> goroutines
dlv> goroutine 1 bt
dlv> break main.loop if i == 10
| 场景 | 工具 |
|---|---|
| 本地调试 | Delve |
| VS Code | Delve + Go 插件 |
| Docker | Delve headless |
| 线上问题 | 日志 + pprof |
如果你愿意,可以告诉我:
我可以给你更具体的调试配置。