安裝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程式,沒有辦法接受請求,從而無法測試。