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

奇怪的是,run模式運行就正常,當時我第一感覺是,可能是debug插件有問題。

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

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

故而想把我的操作過程詳細記錄下來,希望可以幫助其他在使用JetBrains GoLand學習Go出現debug異常的小伙伴。

這一個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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM