Go-Ethereum

如何從 Intellij Webstorm 中調試 Geth 的 go 程式碼?

  • October 3, 2017

我希望能夠通過 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 並將其更改為Filefrom Package。然後鍵入包的名稱,例如,github.com/ethereum/go-ethereum/cmd/geth並保存設置。然後去執行| 調試…並選擇您之前編輯的執行配置並將其選為調試執行。

我還製作了一個小影片,指導您如何更改Run kind執行配置,您可以在此處查看

引用自:https://ethereum.stackexchange.com/questions/27627