Wie debuggt man den Go-Code von Geth in Intellij Webstorm?

Ich würde gerne in der Lage sein, den Go-Code von Geth zu debuggen - mit Intellij Webstorm.

Idealerweise würde ich gerne einen privaten Geth-Knoten innerhalb von Webstorm ausführen und einen Haltepunkt setzen, aber ich würde mich auch mit einer Remote-Verbindung zu einem lokalen Knoten begnügen, den ich über die Befehlszeile gestartet habe.

Es sieht für mich so aus, als ob der Einstiegspunkt für Geth main.go ist , aber wenn ich versuche, dies auszuführen, erhalte ich die folgenden Fehler:


.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

Kann mir jemand genau helfen, wie ich Geth aus Webstorm heraus starten kann, dh nicht aus der kompilierten, Geth, Binärdatei, bitte?

--- Update nach dem Versuch, aus dem Paket statt aus einer Datei zu starten ---

Wenn ich das Paket auf "github.com/ethereum/go-ethereum/cmd/geth" setze, erhalte ich leider die folgenden Fehler:


/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"
Es sieht so aus, als hätten Sie die Abhängigkeiten nicht erhalten
hast du es gelöst? Ich habe auch das gleiche Problem. Ich kompiliere mit Go Compiler Tough, dem Standard-Compiler. Es kann keine Konfigurationsdatei finden und andere Variablen sind nicht gesetzt, genau wie Sie es tun. Ich laufe mit go run ... geth.go. Haben Sie herausgefunden, wie Sie diese Fehler entfernen können?
Ja, ich habe es geschafft, das Problem zu lösen. Ich bemerkte, dass ich nicht auf Go 1.9 war und nachdem ich auf die neueste Version von Go aktualisiert hatte, verschwanden die Fehler.

Antworten (1)

Stellen Sie zunächst sicher, dass Sie über die neueste Version, EAP 15, 173.2696.28, verfügen und die neueste Version von Go, 1.9, verwenden, da dies aufgrund der jüngsten Verbesserungen in Go in Bezug auf das Debuggen für ein besseres Debugging-Erlebnis bevorzugt wird.

Gehen Sie dann zu Ausführen | Konfigurationen bearbeiten | Gehen Sie zu Anwendungen | Wählen Sie die Laufkonfiguration aus, die Sie bearbeiten möchten | Führen Sie kind aus und ändern Sie es in Filefrom Package. Geben Sie dann beispielsweise den Namen des Pakets ein github.com/ethereum/go-ethereum/cmd/gethund speichern Sie die Einstellungen. Gehen Sie dann zu Ausführen | Debug... und wählen Sie die Laufkonfiguration aus, die Sie zuvor bearbeitet haben, und wählen Sie diese als Debug-Lauf aus.

Ich habe auch ein kleines Video erstellt, das Ihnen zeigen soll, wie Sie die Run kindfür eine Run-Konfiguration ändern können, Sie können es hier sehen .

Vielen Dank für die Bereitstellung eines Videos zur Erklärung - es hat wirklich geholfen, zu verdeutlichen, was Sie meinten. Leider schien es das Problem nicht zu lösen - ich habe meiner Frage im Update weitere Details hinzugefügt.
Sie können den -linkmode in Ihrem Fall weglassen, das ist hauptsächlich unter Windows und Go < 1.9 nützlich. In einigen Fällen funktioniert es unter Linux / OSX, es hilft auch beim Debuggen, aber in diesem Fall kann es weggelassen werden. Entfernen Sie das und versuchen Sie es erneut.