這是一篇寫給剛開始學習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。
百度一番後,發現這應該是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命令就是我們要用到的——
既然如此,若是dlv(Delve 簡寫)版本過低的原因,那好辦,不妨先升級一下div。
一、下載div新版本
執行go get -u github.com/derekparker/delve/cmd/dlv
這時候,可能會出現 RPC failed; curl 28 OpenSSL SSL_read: Connection was reset, errno 10054,這是遠端從GitHub上拉去的dlv檔案超過本地設定下載檔案大小限制的原因,故而把本地git下載限制調大即可,例如:git config --global http.postBuffer 624288000。
再執行上面的go get -u github.com/derekparker/delve/cmd/dlv,就可以正常更新了,執行成功後,進入到你的GOPATH目錄下,就可以看到多了一個bin目錄,且目錄底下有一個dlv.exe檔案,即證明新版本Delve 下載完成。
至於GOPATH目錄在哪裡,其實在下載Go的執行環境時,它會自動在電腦系統環境變數裡幫你設定,例如,我的是在——
二、替換JetBrains GoLand編譯器的本地div工具路徑
設定檔案所在路徑:Help->Edit Custom Properties
進入到Edit Custom Properties後,設定新div的配置如下:
dlv.path=C:/Users/Administrator/go/bin/dlv
其中,C:/Users/Administrator/go是你的系統環境變數裡的%GOPATH%對應路徑,我這裡用到了絕對路徑,不知道直接用dlv.path=%GOPATH%/bin/dlv可否也行,暫時沒有進一步嘗試,感興趣的小夥伴可自行驗證。
設定完的配置如下:
完成這一步後,需要重啟一下JetBrains GoLand,選擇路徑File->Invalidate Caches /Restart
等待重啟完成,就可以打一個斷點,試一下debug是否可行了,經驗證,已可以正常進行debug執行,接下來就可以愉快地啪~敲Go語言程式碼了。