温馨提示×

linux golang如何调试程序

小樊
40
2026-10-21 17:35:19
栏目: 编程语言

在 Linux 下用 Go(Golang) 调试程序,常见且实用的方式有以下几种,从简单到专业逐步介绍:


一、最基础的:打印调试(适合快速定位)

1. 使用 fmt.Println

fmt.Println("debug:", x, y)

2. 使用 log

import "log"

log.Println("value:", x)

✅ 优点:简单
❌ 缺点:不够灵活,生产代码不推荐


二、使用 Delve(推荐,Go 官方调试器)

Delve 是 Go 最常用、最专业的调试工具。

1. 安装 Delve

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

确认安装:

dlv version

2. 调试方式一:直接运行调试

dlv debug main.go

进入调试界面后常用命令:

break main.main        # 设置断点
continue               # 运行
next                   # 单步(不进入函数)
step                   # 单步(进入函数)
print x                # 打印变量
locals                 # 查看局部变量
exit                   # 退出

3. 调试方式二:附加到正在运行的程序

dlv attach <pid>

适合调试:

  • 已部署的服务
  • 无法停掉的程序

4. 远程调试(服务器常用)

dlv exec ./app --headless --listen=:2345 --api-version=2

本地 VS Code / GoLand 连接即可。


三、使用 VS Code 调试(最推荐日常开发)

1. 安装插件

  • Go 插件(官方)

2. 配置 launch.json

{
  "name": "Launch",
  "type": "go",
  "request": "launch",
  "mode": "auto",
  "program": "${workspaceFolder}"
}

3. 功能

  • 断点
  • 变量查看
  • 调用栈
  • 条件断点

四、pprof(性能 & 卡死调试)

适合:

  • CPU 占用高
  • 内存泄漏
  • 协程泄露

1. 引入

import _ "net/http/pprof"

2. 启动

go func() {
    http.ListenAndServe("0.0.0.0:6060", nil)
}()

3. 查看

go tool pprof http://localhost:6060/debug/pprof/goroutine

五、常见调试场景建议

场景 推荐方式
逻辑错误 Delve / VS Code
线上问题 dlv attach / pprof
性能问题 pprof
快速验证 fmt/log

六、小贴士

  • 编译时保留调试信息(默认就有)
  • 不要用 -ldflags "-s -w" 调试
  • Go 1.21+ 对 Delve 支持更好

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

  • 是 命令行程序 / Web 服务 / 微服务
  • 用 VS Code / GoLand / 纯终端
  • 是 本地调试还是服务器调试

我可以直接给你一套最合适的调试配置。

0 踩