安装go
wget https://studygolang.com/dl/golang/go1.14.1.linux-amd64.tar.gz
tar -C /usr/local -zxvf go1.14.1.linux-amd64.tar.gz
mkdir -p /home/go/bin/home/go/pkg /home/go/src #官方建议工作目录为/home/go
vi .bash_profile
#在最下面添加
export GOROOT=/usr/local/go
export GOPATH=/home/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
export GOPROXY="https://goproxy.io"
source .bash_profile
安装Delve
# cd $GOPATH/src/
# git clone https://github.com/derekparker/delve.git
# cd delve/cmd/dlv/
# go build
# go install
命令介绍
Usage:
dlv [command]
Available Commands:
attach 可以用来对一个正在运行的进行进行调试.
connect 连接到headless调试器.
core 用来调试core文件.
dap [EXPERIMENTAL] 启动一个Debug Adaptor Protocol (DAP)的TCP服务器来通信.
debug 在当前包或者指定的包编译并debug程序.
exec 如果你已经编译好了二进制,可以用该命令启动调试.
help 帮助命令.
test 可以用来测试自己编写的测试源码文件.
trace 编译并跟踪程序.
debug和attach使用的多一点
Dlv Debug
-
b(break) main.main:设置断点,还可以根据行号设置断点 b 9
-
bp:查找已经设置的断点
-
c:该命令是让程序运行起来,遇到设置的断点会停止
-
restart:重新开始下一轮的调试
-
n:下一步,不会陷入内部
-
s:进入某个函数的内部,源码函数也跟踪进去
-
so:如果用s陷入到内部函数,可以快速使用该命令跳出来,回到进入点
-
p [var_name]:打印变量的值
-
gr and grs:这两个命令是用来查看goroutine的
-
help:使用过程中随时通过help查看命令
debug运行中的进程
找到运行中的进程号,执行dlv attach {pid},设置完断点后,记得用c让进程处于运行状态,否则对于http或者grpc程序,没有办法接受请求,从而无法测试。