Go以及调试工具dlv安装及使用

时间:2024-02-01 10:38:09

安装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:该命令是让程序运行起来,遇到设置的断点会停止

    截屏2021-05-31 上午11.23.03

  • restart:重新开始下一轮的调试

  • n:下一步,不会陷入内部

  • s:进入某个函数的内部,源码函数也跟踪进去

  • so:如果用s陷入到内部函数,可以快速使用该命令跳出来,回到进入点

  • p [var_name]:打印变量的值

  • gr and grs:这两个命令是用来查看goroutine的

  • help:使用过程中随时通过help查看命令

    截屏2021-05-31 上午11.40.25

debug运行中的进程

找到运行中的进程号,执行dlv attach {pid},设置完断点后,记得用c让进程处于运行状态,否则对于http或者grpc程序,没有办法接受请求,从而无法测试。