温馨提示×

golang linux调试怎么弄

小樊
42
2026-10-24 17:54:16
栏目: 编程语言

在 Linux 下调试 Golang 程序,常见方式有 命令行调试(dlv / gdb)、IDE 调试(GoLand / VSCode)、以及日志/pprof 调试。下面按实用程度给你一套完整指南。


一、最推荐:Delve(dlv)—— Go 官方社区标准调试器

1. 安装 dlv

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

确认:

dlv version

2. 调试方式

✅ 本地调试(最常用)

dlv debug ./main.go

进入交互式界面后:

b main.main        # 打断点
c                  # 继续
n                  # 下一行
s                  # 进入函数
p varName          # 打印变量
bt                 # 调用栈

✅ 调试已编译程序

dlv exec ./myapp

✅ attach 到正在运行的进程(线上常用)

dlv attach <pid>

✅ 远程调试(服务器无界面)

服务器:

dlv debug --headless --listen=:2345 --api-version=2

本地 VSCode / GoLand 连 :2345


二、VSCode 调试(最舒服)

1. 安装

  • Go 插件(Microsoft 官方)
  • Delve 自动安装

2. launch.json 示例

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Launch",
      "type": "go",
      "request": "launch",
      "mode": "debug",
      "program": "${workspaceFolder}"
    }
  ]
}

直接 F5 即可断点调试。


三、GoLand 调试(最简单)

  • Run → Debug
  • 点行号打断点
  • 支持 goroutine 视图、变量、调用栈

四、GDB(不推荐但可用)

⚠️ Go 对 gdb 支持不完整(goroutine、channel 不好看)

gdb ./myapp
run
bt

仅适合看 CGO / 崩溃栈。


五、线上问题排查(不是“断点”)

1. panic / core dump

GOTRACEBACK=all ./app

或:

ulimit -c unlimited

用 dlv core 分析。

2. pprof(性能/卡死)

import _ "net/http/pprof"
go tool pprof http://localhost:6060/debug/pprof/goroutine

3. 日志调试(最稳)

log.Printf("x=%v", x)

六、常见坑

❌ CGO 必须:

CGO_ENABLED=1 go build

❌ 优化后变量看不到:

go build -gcflags="all=-N -l"

❌ 容器里调试:

dlv --headless --listen=:40000

七、你适合哪种?

  • 新手 / 日常开发:VSCode + dlv ✅
  • 服务器问题:dlv attach ✅
  • 性能问题:pprof ✅
  • 纯命令行:dlv debug ✅

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

  • 是本地还是服务器?
  • 是否容器?
  • 是崩溃、卡死还是逻辑错误?

我可以直接给你对应命令。

0 踩