Go 的 Debug 工具 delve 介绍

以下文章来源于大愚Talk,作者大愚Talk
delve 的汉语意思是:钻研、探索;用这个来命名一个debug工具还是非常的形象 。
本文主要介绍该工具的安装与常用使用方法 。是一个step-by-step的文章 。目标是帮助大家学会如何使用 delve 来debug自己的代码 。
安装官网的安装文档地址:
https://github.com/go-delve/delve/tree/master/Documentation/installation
我再重复下如何在 mac 上进行安装 。
首先 xcode-select --install 把依赖的编译工具链安装一下 。
然后通过下面的命令即可完成
$ go get github.com/go-delve/delve/cmd/dlv
这里有个注意点,大家如果使用modules的方式来管理项目,应该知道安装依赖包也是上面这个命令 。所以执行上面的命令时,请确保自己不是在一个go modules的路径下 。
到此,安装工作就可以完成了,可以在终端执行,可以看到如下画面:
? /Users/dayu >dlv versionDelve DebuggerVersion: 1.4.0Build: $Id: 67422e6f7148fa1efa0eac1423ab5594b223d93b $命令介绍用中文来翻译下命令的含义 。
Usage:dlv [command]Available Commands:attach可以用来对一个正在运行的进行进行调试.connect连接到headless调试器.core用来调试core文件.dap[EXPERIMENTAL] 启动一个Debug Adaptor Protocol (DAP)的TCP服务器来通信.debug在当前包或者指定的包编译并debug程序.exec如果你已经编译好了二进制,可以用该命令启动调试.help帮助命令.test可以用来测试自己编写的测试源码文件.trace编译并跟踪程序.dlv 的命令非常多,主要介绍下 debug 与 attach 的使用 。其它命令大家可以尝试下,不过一般用的也非常少!dlv test 这个也非常有用,不过使用跟debug差不多 。
使用下面将主要介绍这 debug 与 attach 如何使用,这两个命令其实主要面对两种使用场景 。
  1. 用 Golang 写了一个命令行程序,想要debug一下;
  2. 写了一个 Grpc 或者 Http 服务,运行的进行进行debug;
进入调试后,他们的命令非常相似,下面开始我们的 debug 之旅 。
Debug Main包程序先来看直接使用 debug 来调试代码 。调试的代码样例:
Go 的 Debug 工具 delve 介绍

文章插图
 
【Go 的 Debug 工具 delve 介绍】debug调试代码
此时在终端进入该文件所在路径,然后执行
dlv debug
然后会成功进入 delve 提供的debug交互界面,如下图所示 。
Go 的 Debug 工具 delve 介绍

文章插图
 
debug交互
图中展示了三个非常常用的命令 。来分别解释下 。
  • b main.main
这个命令的全拼是:break main.main 用来设置断点的 。除了这种写法,常用的还有使用行号来设置断点 b 9 。
  • bp
这个命令是用来查找已经设置的断点的 。
Go 的 Debug 工具 delve 介绍

文章插图
 
断点查看
查看已经设置的断点常常一个目的是用来寻找 clear 可以清除哪一个断点 。
  • c
该命令是让程序运行起来 。遇到设置的断点会停止 。


    推荐阅读