Google官方為Golang的調試例子默認使用了gdb
然而, 使用gdb調試go程序會遇到goroutine的各類問題, 因為gdb不懂go
因此, 這里使用delve黑科技來進行Golang的程序調試
純命令行調試方法在網上很容易搜索到, 本文主要以LiteIDE來進行程序調試
關閉編譯器優化
正常go build/install出的go程序是完全優化過的, 強行使用調試器掛接調試時, 某些local變量/lamda表達式捕獲的變量會直接進入寄存器, 無法使用調試器查看
刪掉所有的pkg, 為build或install參數加入關閉編譯器優化的參數 -gcflags "-N -l"
例如:
go install -gcflags "-N -l" svc\gamesvc
delve調試器安裝方法
LiteIDE自帶了gdb, 但是沒有delve調試器, 需要自行安裝, 命令如下
go get github.com/derekparker/delve/cmd/dlv
delve調試器會被放到你的GOPATH/bin下
LiteIDE中的delve調試器配置
選擇調試器
在LiteIDE菜單中選擇 調試->debugger/delve
delve環境變量設置
這個時候, LiteIDE依然找不到delve, 因為它不在環境變量PATH中, 這里無需修改環境變量, 只需要LiteIDE的環境配置
在LiteIDE菜單中選擇 查看->編輯當前環境, 在彈出的文檔中修改
PATH=c:\mingw32\bin;%GOROOT%\bin;%PATH%;c:\your\path\to\delve
去掉PATH前的注釋#, 在%PATH%添加分號, 然后和你到delve調試器的路徑
開始調試
選擇你的工程, 點擊F5, 進入調試模式
調試器顯示變量值

LiteIDE使用delve調試時, 無法在 變量 監視等窗口中正確捕捉delve調試返回數據(因為格式太復雜了…)
沒關系, 我們使用命令行配合顯示即可
LiteIDE控制臺或調試輸出窗口在delve調試時, 實際上是一個標準命令行
命令如下
p 變量名可以查看變量值
locals查看局部變量
ls可查看當前文件
stack查看棧
help可以查看各種幫助
調試外部程序
如果你的程序是外部程序, 或者使用go install安裝到GOPATH/bin目錄的程序, 那么使用delve調試器啟動程序時, 可能會碰到啟動路徑錯誤的問題
使用LiteIDE菜單 調試->調試其他應用程序… 填入你要調試程序的路徑以及工作目錄, 可以解決這個問題