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