温馨提示×

centos怎么调试golang应用

小樊
32
2026-09-02 19:01:15
栏目: 编程语言

在 CentOS 上调试 Golang 应用,常用方式有以下几种,按使用频率和可操作性从简单到专业说明:


一、基础调试(日志 + 命令行)

1. 使用 log / fmt 打印

最简单、最常用:

import "log"

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

或:

fmt.Printf("x=%v\n", x)

运行:

go run main.go
# 或
go build && ./app

二、使用 Delve(推荐 ✅)

Delve 是 Go 官方推荐的调试器

1. 安装 Delve

sudo yum install -y git
go install github.com/go-delve/delve/cmd/dlv@latest

确保 GOPATH/bin 在 PATH:

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

2. 本地调试

dlv debug main.go

常用命令:

break main.main        # 打断点
continue               # 运行
next                   # 单步
print x                # 打印变量
locals                 # 查看局部变量
exit

3. 调试已编译程序

dlv exec ./app

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

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

本地(VS Code / GoLand)连接:

localhost:2345

三、VS Code 远程调试(CentOS 服务器)

1. 服务器

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

2. 本地 .vscode/launch.json

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Remote",
      "type": "go",
      "request": "attach",
      "mode": "remote",
      "remotePath": "/path/to/project",
      "port": 2345,
      "host": "服务器IP"
    }
  ]
}

四、性能调试(CPU / 内存)

1. pprof(非常重要)

import _ "net/http/pprof"

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

查看:

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

2. trace

import "runtime/trace"

f, _ := os.Create("trace.out")
trace.Start(f)
defer trace.Stop()

分析:

go tool trace trace.out

五、常见 CentOS 问题

1. yum 太老

sudo yum install -y epel-release

2. Go 版本过低

sudo rm -rf /usr/local/go
wget https://go.dev/dl/go1.22.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.22.linux-amd64.tar.gz

六、调试方案选择建议

场景 推荐方式
快速定位 fmt / log
断点调试 Delve
线上问题 pprof + trace
远程开发 VS Code + Delve

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

  • 本地还是服务器
  • VS Code / GoLand / 命令行
  • Web / 微服务 / CLI

我可以给你一套具体可复制的配置

0