温馨提示×

ubuntu golang编译怎么调试

小樊
33
2026-10-10 06:30:00
栏目: 编程语言

在 Ubuntu 上用 Go(Golang)进行编译和调试,常见做法主要分为:使用 Delve 调试器(推荐)、用 GDB(不推荐但可用)、以及日志/单元测试方式。下面按实用顺序说明。


一、基础编译(Ubuntu)

1. 安装 Go

sudo apt update
sudo apt install golang-go
# 或官方版本
# https://go.dev/dl/
go version

2. 普通编译

go build -o app main.go
./app

3. 带调试信息的编译(重要)

Go 默认已包含调试信息,但建议关闭优化,方便调试:

go build -gcflags="all=-N -l" -o app main.go
  • -N:关闭优化
  • -l:关闭内联

二、使用 Delve 调试(强烈推荐 ✅)

1. 安装 Delve

go install github.com/go-delve/delve/cmd/dlv@latest

确保 ~/go/bin 在 PATH:

export PATH=$PATH:~/go/bin

2. 调试方式一:直接调试程序

dlv debug main.go

进入交互界面:

(dlv) break main.main
(dlv) continue
(dlv) next
(dlv) print variableName
(dlv) quit

3. 调试已编译的二进制

dlv exec ./app

4. 远程调试(VS Code / Docker 常用)

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"
}

三、使用 GDB(不推荐 ⚠️)

Go 对 GDB 支持有限,尤其 goroutine 调试较差。

gdb ./app
(gdb) break main.main
(gdb) run
(gdb) bt

四、常见调试技巧

1. 打印变量

fmt.Printf("%+v\n", obj)

2. 查看 goroutine

dlv> goroutines
dlv> goroutine 1 bt

3. 条件断点

dlv> break main.loop if i == 10

五、推荐组合(生产/开发)

场景 工具
本地调试 Delve
VS Code Delve + Go 插件
Docker Delve headless
线上问题 日志 + pprof

如果你愿意,可以告诉我:

  • 是 命令行 / VS Code / Docker
  • 是否 多 goroutine / Web 服务

我可以给你更具体的调试配置。

0 踩