相比 GDBdelve 对 go 的支持更好,比如在创建有多个 goroutine 时,调试器不会出跳到其它 goroutine

HUGOMORE42

安装

1
brew install go-delve/delve/delve

使用

通常使用 dlv run main.godlv exec ./main 的方式来执行程序。

注意: 使用 dlv exec 执行时,需在编译时添加编译参数 -ldflags "-s" 忽略 debug 打印信息, 使用 -gcflags "-N -l" 关闭编译器优化。

也可使用 dlv attach <pid> 扑到一个正在运行中的进程上去。

常用命令:

  • break (b) 打断点: b test.go:23 在 test.go 的23行打断点; b main.myFun 在 main 包的 myfun 函数打断点。
  • continue (c) 继续运行到下一个断点或程序结束
  • next (n) 单步执行
  • print (b) <var> 打印变量 var 的值: p myVar
  • set var=123
  • restart (r) 重启进程
  • quit 退出