Golang可以使用内置调试器和第三方工具进行调试。
一、内置调试器:GDB
GDB是Linux下的一个命令行调试器,使用GDB调试Go程序有以下几个步骤:
1. 编译Go程序时加上-g参数生成调试信息
例如:
go build -gcflags "-N -l" main.go
2. 启动GDB
gdb ./main
3. 设置breakpoint
使用break命令设置断点,例如:
break main.main
4. 运行程序
run
5. 进入断点
程序执行到断点处时停下来,可以使用step命令单步执行程序,也可以使用next命令跳过当前断点,继续执行程序。
例如:
(gdb) step
6. 查看变量
使用print命令可以打印出变量的值,例如:
(gdb) print a
7. 退出GDB
使用quit命令退出GDB。
二、第三方工具:delve
delve是一个跨平台的Go调试工具,使用delve调试Go程序有以下几个步骤:
1. 安装delve
go get -u github.com/go-delve/delve/cmd/dlv
2. 启动delve
dlv debug ./main.go
3. 设置breakpoint
使用break命令设置断点,例如:
break main.main
4. 运行程序
continue
5. 进入断点
程序执行到断点处时停下来,可以使用next命令跳过当前断点,也可以使用step命令单步执行程序。
例如:
(dlv) next
6. 查看变量
使用print命令可以打印出变量的值,例如:
(dlv) print a
7. 退出delve
使用quit命令退出delve。
完整示例:
代码部分:
package main
func main() {
a := 1
b := 2
c := add(a, b)
println(c)
}
func add(a int, b int) int {
sum := a + b
return sum
}
使用GDB调试:
$ go build -gcflags "-N -l" main.go
$ gdb ./main
(gdb) break main.main
(gdb) run(gdb) step
(gdb) print a
(gdb) next
(gdb) print b
(gdb) quit
使用delve调试:
$ dlv debug ./main.go (dlv) break main.main (dlv) continue(dlv) next
(dlv) print a(dlv) next
(dlv) print b (dlv) quit
以上步骤仅供参考,具体操作根据实际情况进行适当调整。