温馨提示×

centos golang怎么调试

小樊
47
2026-09-29 23:43:07
栏目: 编程语言

在 CentOS 上调试 Golang 程序,常见方式有以下几种,按“从简单到专业”给你梳理一下:


一、最基础的调试方式(不需要额外工具)

1. 打印日志(print / log)

package main

import "fmt"

func main() {
    fmt.Println("debug info")
}

或用 log:

import "log"
log.Println("debug")

✅ 适合:简单问题、线上环境


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

1. 安装 Delve

CentOS 需要先有 Go 环境

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

如果 dlv 不在 PATH:

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

验证:

dlv version

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

dlv debug main.go

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

break main.main      # 打断点
continue             # 运行
next                 # 单步
print varName        # 打印变量
locals               # 本地变量

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

dlv attach <pid>

适合:

  • 线上服务
  • 已 go build 出来的程序

4. 远程调试(非常常用)

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

本地(VS Code / GoLand)连接:

localhost:2345

三、使用 VS Code 调试(最舒服)

1. 安装插件

  • Go 插件(官方)

2. launch.json 示例

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

CentOS 上需要:

  • 安装 dlv
  • SSH 到 CentOS(Remote SSH)

四、GDB(不推荐,但能用)

Go 对 GDB 支持有限(goroutine、channel 不友好):

gdb ./app

⚠️ 仅适合 Cgo 或底层问题


五、常见 CentOS 环境问题

1. 找不到 dlv

which dlv

没有就:

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

2. SELinux 阻止

setenforce 0

(生产不建议长期关)

3. 防火墙(远程调试)

firewall-cmd --add-port=2345/tcp --permanent
firewall-cmd --reload

六、调试建议总结

场景 推荐方式
本地开发 VS Code + Delve
线上问题 dlv attach
微服务 headless dlv
快速排查 log

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

  • CentOS 版本(7 / 8 / Stream)
  • Go 版本
  • 是否在 Docker 里
  • 用 VS Code 还是命令行

我可以给你更精确的配置示例。

0 踩