温馨提示×

如何调试debian的golang

小樊
43
2026-09-26 11:12:27
栏目: 编程语言

在 Debian 上调试 Golang 程序,常见方式包括使用 Delve 调试器、打印日志/单元测试、以及系统级工具(strace/gdb)。下面按“最推荐 → 进阶”的顺序说明。


一、最推荐:使用 Delve(Go 官方友好调试器)

1. 安装 Delve

sudo apt update
sudo apt install golang-go git -y

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

确保 ~/go/bin 在 PATH 中:

export PATH=$PATH:~/go/bin

验证:

dlv version

2. 本地调试

dlv debug ./main.go

常用命令:

  • break main.main 设置断点
  • continue / c 继续执行
  • next / n 单步
  • step / s 进入函数
  • print x 打印变量
  • exit 退出

3. 调试运行中的进程

dlv attach <pid>

⚠️ 注意:

  • 需要同用户或 root
  • 若报错 ptrace,需关闭 YAMA:
echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope

4. 远程调试(推荐用于服务)

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

VS Code 配置示例:

{
  "name": "Remote",
  "type": "go",
  "request": "attach",
  "mode": "remote",
  "remotePath": "${workspaceFolder}",
  "port": 2345,
  "host": "192.168.1.10"
}

二、基础调试方式(快速)

1. 日志

import "log"
log.Println("debug:", x)

或:

go run -race main.go

2. 单元测试

go test -v ./...
go test -run TestX -v

三、系统级调试(进阶)

1. strace(系统调用)

sudo apt install strace
strace -f ./app

2. gdb(不推荐用于 Go)

sudo apt install gdb
gdb ./app

⚠️ Go 的 goroutine 调度对 gdb 不友好,优先用 Delve。


四、常见问题(Debian 特有)

1. “permission denied” 或 ptrace 被禁

sudo sysctl kernel.yama.ptrace_scope=0

2. CGO 程序调试

CGO_ENABLED=1 go build -gcflags="all=-N -l"
dlv debug

五、推荐组合

  • 本地开发:Delve + VS Code
  • 服务器:Delve headless + 远程 attach
  • 疑难问题:strace + Delve

如果你有具体场景(如:Web 服务、CGO、K8s、systemd 服务),我可以给你更精确的调试方案。

0 踩