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