安裝 delve
官方的文檔已經(jīng)很全了秧骑,參考這里(github)安裝。Mac OSX 比較麻煩,需要搞定證書挺据。
斷點(diǎn)和變量打印
delve 裝好之后就可以直接在命令行使用 dlv 命令了。
查看可用的命令
dlv -h
看幫助信息可知:支持用 dlv attach 的方式調(diào)試正在運(yùn)行的進(jìn)程脖隶,支持 dlv connect 鏈接到網(wǎng)絡(luò)端口調(diào)試扁耐。這里先用最簡單的 dlv debug 調(diào)試。
dlv debug main.go
然后會進(jìn)入調(diào)試模式产阱,此時 help 可以看到支持的命令婉称。
(dlv) b main.go:16 #在 main.go 的第 16 行設(shè)置斷點(diǎn)。
(dlv) bp #查看當(dāng)前所有斷點(diǎn)(dlv) c #運(yùn)行到下一個斷點(diǎn)或者程序結(jié)尾
(dlv) p a #打印變量 a 的值(dlv) n #單步執(zhí)行代碼(dlv) set a=1 #設(shè)置變量a 的值
你也可以在函數(shù)上設(shè)置斷點(diǎn):
(dlv) b main.main
同時你也可以輸出一個表達(dá)式:
true ```
我們使用 continue 到我們設(shè)置斷點(diǎn)的地方构蹬,然后 next
```(dlv) next ```
清除所有斷點(diǎn):
```(dlv) clearall```
###進(jìn)階調(diào)試
其實(shí)很多時候王暗,我們調(diào)試的代碼可能是 daemon
程序或者需要實(shí)現(xiàn)編譯好在不同機(jī)器運(yùn)行的程序。這就需要我們 attach
到一個已經(jīng)在運(yùn)行中的程序上庄敛,下面我們就使用上面的代碼來演示一下如何 attach
到一個程序上進(jìn)行調(diào)試俗壹。首先將剛才的程序運(yùn)行起來,我這里直接使用了
```go build test-debug.go./test-debug```
然后使用ps查看正在運(yùn)行的程序pid
```501 40994 549 0 12:08AM ttys003 0:00.00 ./test-debug```
然后我們 attach上去
```(dlv) attach 40994```
可以看到,熟悉的 debug seesion又回來了藻烤。下面我們可以繼續(xù)使用上面的命令去設(shè)置斷點(diǎn)了
```(dlv) break dostuff```