温馨提示×

怎样在Debian调试Golang程序

小樊
43
2026-09-20 13:37:17
栏目: 编程语言

在 Debian 系统上调试 Golang 程序,常用的方法和工具如下,从最基础专业调试逐步介绍。


一、基础调试方式(不依赖额外工具)

1. 使用 fmt.Println / log

最简单、最常用:

package main

import "fmt"

func main() {
    fmt.Println("debug point 1")
}

适合:

  • 快速定位问题
  • 脚本/小工具

2. 使用 panic / recover

用于查看调用栈:

panic("something wrong")

或:

defer func() {
    if r := recover(); r != nil {
        fmt.Println(r)
    }
}()

二、使用 go test 调试

go test -v ./...

带日志:

go test -v -run TestXXX

查看覆盖率:

go test -cover

三、使用 Delve(推荐,专业调试器)

1. 安装 Delve(Debian)

sudo apt update
sudo apt install golang-delve

或:

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

确保:

export PATH=$PATH:$(go env GOPATH)/bin

2. 常用调试方式

(1)直接运行并调试

dlv debug main.go

进入调试界面后:

break main.main
continue
next
print x

(2)调试正在运行的程序(attach)

dlv attach <pid>

适合:

  • 线上服务
  • 后台进程

(3)远程调试(推荐用于服务器)

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

本地使用 VS Code 或 GoLand 连接。


四、使用 VS Code(图形化调试)

1. 安装插件

  • Go 插件(Microsoft)

2. launch.json 示例

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

支持:

  • 断点
  • 变量查看
  • 单步执行

五、日志与性能调试

1. 标准日志

import "log"
log.SetFlags(log.LstdFlags | log.Lshortfile)

2. pprof(性能分析)

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

六、常见问题(Debian 特有)

1. dlv 无法调试

可能是 ptrace 被禁:

sudo sysctl kernel.yama.ptrace_scope=0

或 Docker 中加:

--cap-add=SYS_PTRACE

2. Go 版本太旧

Debian 自带 Go 可能较旧:

go version

建议安装官方 Go: https://go.dev/dl/


七、推荐调试组合(总结)

场景 推荐方式
快速问题 fmt / log
单元测试 go test
复杂逻辑 Delve
生产服务 dlv attach / pprof
图形界面 VS Code

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

  • 命令行程序 / Web 服务 / 微服务
  • 是否在 Docker / 服务器
  • 使用的是 VS Code / 终端

我可以给你更具体的调试方案。

0