在 Debian 上调试 Golang 程序,常见方式包括使用 Delve 调试器、打印日志/单元测试、以及系统级工具(strace/gdb)。下面按“最推荐 → 进阶”的顺序说明。
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
dlv debug ./main.go
常用命令:
break main.main 设置断点continue / c 继续执行next / n 单步step / s 进入函数print x 打印变量exit 退出dlv attach <pid>
⚠️ 注意:
ptrace,需关闭 YAMA:echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
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"
}
import "log"
log.Println("debug:", x)
或:
go run -race main.go
go test -v ./...
go test -run TestX -v
sudo apt install strace
strace -f ./app
sudo apt install gdb
gdb ./app
⚠️ Go 的 goroutine 调度对 gdb 不友好,优先用 Delve。
sudo sysctl kernel.yama.ptrace_scope=0
CGO_ENABLED=1 go build -gcflags="all=-N -l"
dlv debug
如果你有具体场景(如:Web 服务、CGO、K8s、systemd 服务),我可以给你更精确的调试方案。