Debian上调试Golang代码的常用方法
Delve是Go语言的专用调试工具,支持断点、单步执行、变量查看等功能,是Debian下调试Golang的首选。
在终端运行以下命令安装最新版Delve:
go install github.com/go-delve/delve/cmd/dlv@latest
安装后,将Delve的可执行文件目录($HOME/go/bin)添加到PATH环境变量中,确保全局可用:
echo 'export PATH=$PATH:$HOME/go/bin' >> ~/.bashrc
source ~/.bashrc
进入Go项目目录,使用dlv debug启动调试(以main.go为例):
dlv debug main.go
这会进入Delve的交互式命令行界面。
break main.go:10 # 在main.go第10行设置断点
break main.main # 在main函数入口设置断点
continue # 继续执行至下一个断点
next # 单步执行(不进入函数)
step # 单步执行(进入函数)
finish # 执行完当前函数并返回
print variableName # 查看变量值
list # 显示当前源代码
bt # 查看调用堆栈
quit或按Ctrl+C。若需调试远程服务,可启动Delve的headless模式并监听端口:
dlv debug --headless --listen=:2345 --api-version=2
然后在IDE(如VSCode)中配置远程调试连接至localhost:2345。
VSCode通过Go插件可提供可视化的调试体验,适合偏好图形界面的开发者。
launch.json(位于.vscode目录),示例如下:{
"version": "0.2.0",
"configurations": [
{
"name": "Launch",
"type": "go",
"request": "launch",
"mode": "debug",
"program": "${workspaceFolder}", // 项目根目录
"env": {},
"args": [] // 可添加命令行参数,如["--flag=value"]
}
]
}
F5或点击调试图标中的绿色“运行”按钮,启动调试。GDB是Linux下的通用调试工具,虽非Go专用,但可通过编译时添加调试信息支持Golang调试。
通过Debian包管理器安装:
sudo apt-get install gdb
使用-gcflags禁用优化和内联(避免调试信息丢失):
go build -gcflags "-N -l" -o debug-demo main.go
-N禁用优化,-l禁用内联,确保GDB能准确定位代码行。
gdb ./debug-demo
进入GDB后,使用以下常用命令:
break main.main # 在main函数入口设置断点
break main.go:10 # 在指定文件行设置断点
run # 开始执行
next # 单步执行(不进入函数)
step # 单步执行(进入函数)
continue # 继续执行至下一个断点
print variableName # 查看变量值
backtrace # 查看调用堆栈
info locals # 查看局部变量
quit。除专用调试工具外,日志记录和单元测试也是排查问题的有效手段。
使用标准库log或第三方库(如logrus)输出执行流程信息:
package main
import (
"log"
"os"
)
func main() {
log.SetOutput(os.Stdout) // 设置日志输出到终端
log.Println("程序启动")
// 程序逻辑...
}
使用testing包编写测试用例,覆盖核心逻辑:
package main
import "testing"
func Add(a, b int) int {
return a + b
}
func TestAdd(t *testing.T) {
result := Add(2, 3)
if result != 5 {
t.Errorf("Add(2, 3) = %d; want 5", result)
}
}
运行测试:
go test -v
测试失败时会输出详细错误信息,帮助定位问题。