Go-Ethereum
如何從 Intellij Webstorm 中調試 Geth 的 go 程式碼?
我希望能夠通過 Geth 的 Go 程式碼進行調試 - 使用 Intellij Webstorm。
理想情況下,我想在 Webstorm 中執行一個私有的 Geth 節點並設置一個斷點,但我也願意遠端連接到從命令行啟動的本地節點。
在我看來, Geth 的入口點好像是main.go,但是,當我嘗試執行它時,出現以下錯誤:
.go/src/github.com/ethereum/go-ethereum/cmd/geth/main.go # command-line-arguments cmd/geth/main.go:112: undefined: configFileFlag cmd/geth/main.go:143: undefined: initCommand cmd/geth/main.go:144: undefined: importCommand cmd/geth/main.go:145: undefined: exportCommand cmd/geth/main.go:146: undefined: removedbCommand cmd/geth/main.go:147: undefined: dumpCommand cmd/geth/main.go:149: undefined: monitorCommand cmd/geth/main.go:151: undefined: accountCommand cmd/geth/main.go:152: undefined: walletCommand cmd/geth/main.go:154: undefined: consoleCommand cmd/geth/main.go:154: too many errors
是否有人能夠幫助我確切地從 Webstorm 中啟動 Geth,而不是從編譯的、geth、二進製文件中啟動?
— 嘗試從包而不是文件執行後更新 —
不幸的是,當我將包設置為“github.com/ethereum/go-ethereum/cmd/geth”時,出現以下錯誤:
/usr/local/go/bin/go build "-ldflags=-linkmode internal" -o /tmp/___main_go github.com/ethereum/go-ethereum/cmd/geth # github.com/ethereum/go-ethereum/cmd/geth github.com/ethereum/go-ethereum/vendor/github.com/karalabe/hid(.text): relocation target __pthread_unwind_next not defined github.com/ethereum/go-ethereum/vendor/github.com/karalabe/hid(.text): undefined: "__pthread_unwind_next"
首先確保您擁有最新版本 EAP 15, 173.2696.28,並且您使用的是最新版本的 Go 1.9,因為最近在調試方面對 Go 進行了改進,因此最好使用最新版本的 Go 來獲得更好的調試體驗。
然後,轉到執行 | 編輯配置 | 轉到應用程序 | 選擇要編輯的執行配置 | 執行 kind 並將其更改為
File
fromPackage
。然後鍵入包的名稱,例如,github.com/ethereum/go-ethereum/cmd/geth
並保存設置。然後去執行| 調試…並選擇您之前編輯的執行配置並將其選為調試執行。我還製作了一個小影片,指導您如何更改
Run kind
執行配置,您可以在此處查看。