JetBrains GoLand 以debug運行Go程式時出現could not launch process: decoding dwarf section info at offset 0x0: too short報錯之保姆級別解決方案

這是一篇寫給剛開始學習Go語言而在搭建環境可能遇到問題的小萌新的文,大神請自行繞路哈(0-0)

有天,我把Go運用環境升到最新版1.16後,用以前一直在用的JetBrains GoLand 2017.3.3 x64版本運行了搭建的gin框架項目時,使用debug模式後,啟動就出現了這樣一條異常資訊:could not launch process: decoding dwarf section info at offset 0x0: too short。
image

百度一番後,發現這應該是Go版本過新而JetBrains GoLand的debug插件版本過老的原因,原本想試試換新一版JetBrains GoLand,但想了一下,這一個小問題,是否可以更快捷地解決呢?若能快捷解決的話,也比再去找一款破解版的新款JetBrains GoLand安裝方便。

網上很多方案,但也不知道哪種有用,在試錯了多次後,發現其中一種是真的有用。

故而想把過錯詳細記錄下來,希望可以幫助更多想用JetBrains GoLand學習Go的小夥伴。

這一個debug錯誤,應屬於Delve調試插件已經過老原因,無法適配新版的Go運用環境。

那麼,Delve工具是什麼呢?

開源軟體庫是這樣介紹的:Delve 是一個 Go 語言的調試器,目標是給 Go 提供一個簡單和特性齊全的調試工具,並且是容易調用和使用的。

簡而言之,當JetBrains GoLand使用debug時,其實就是使用到了Delve的debug命令。

你可以在JetBrains GoLand使用dlv --help,就會出現其具備的命令功能,其中的debug命令就是我們要用到的——
image

既然如此,若是dlv(Delve 簡寫)版本過低的原因,那好辦,不妨先升級一下div。

一、下載div新版本

執行go get -u github.com/derekparker/delve/cmd/dlv

image

這時候,可能會出現 RPC failed; curl 28 OpenSSL SSL_read: Connection was reset, errno 10054,這是遠程從GitHub上拉去的dlv文件超過本地設置下載文件大小限制的原因,故而把本地git下載限制調大即可,例如:git config --global http.postBuffer 624288000。

image

再執行上面的go get -u github.com/derekparker/delve/cmd/dlv,就可以正常更新了,執行成功後,進入到你的GOPATH目錄下,就可以看到多了一個bin目錄,且目錄底下有一個dlv.exe文件,即證明新版本Delve 下載完成。

image

至於GOPATH目錄在哪裡,其實在下載Go的運行環境時,它會自動在電腦系統環境變數里幫你設置,例如,我的是在——
image

二、替換JetBrains GoLand編譯器的本地div工具路徑

設置文件所在路徑:Help->Edit Custom Properties

image

進入到Edit Custom Properties後,設置新div的配置如下:

dlv.path=C:/Users/Administrator/go/bin/dlv

其中,C:/Users/Administrator/go是你的系統環境變數里的%GOPATH%對應路徑,我這裡用到了絕對路徑,不知道直接用dlv.path=%GOPATH%/bin/dlv可否也行,暫時沒有進一步嘗試,感興趣的小夥伴可自行驗證。

設置完的配置如下:

image

完成這一步後,需要重啟一下JetBrains GoLand,選擇路徑File->Invalidate Caches /Restart

等待重啟完成,就可以打一個斷點,試一下debug是否可行了,經驗證,已可以正常進行debug運行,接下來就可以愉快地啪~敲Go語言程式碼了。

image