¿Cómo depurar el código go de Geth desde Intellij Webstorm?

Me gustaría poder depurar a través del código Go de Geth, utilizando Intellij Webstorm.

Idealmente, me gustaría ejecutar un nodo Geth privado dentro de Webstorm y establecer un punto de interrupción, pero también me conformaría con conectarme de forma remota a un nodo local que he iniciado desde la línea de comandos.

Me parece que el punto de entrada para Geth es main.go , sin embargo, cuando intento ejecutar esto, aparece el siguiente error:


.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

¿Alguien puede ayudarme con exactamente cómo puedo iniciar Geth desde Webstorm, es decir, no desde el binario compilado, geth, por favor?

--- Actualización después de intentar ejecutar desde el paquete en lugar de un archivo ---

Desafortunadamente, cuando configuro el paquete en "github.com/ethereum/go-ethereum/cmd/geth" obtengo los siguientes errores:


/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"
parece que no fuiste a buscar las dependencias
lo solucionaste? También tengo el mismo problema. Estoy compilando con go compiler hard, el estándar. No puede encontrar el archivo de configuración y otras variables no están configuradas, exactamente como lo hace. estoy corriendo con go run ... geth.go. ¿Descubriste cómo eliminar esos errores?
Sí, he conseguido solucionar el problema. Noté que no estaba en Go 1.9 y después de actualizar a la última versión de Go, los errores desaparecieron.

Respuestas (1)

Primero, asegúrese de tener la última versión, EAP 15, 173.2696.28, y de estar usando la última versión de Go, 1.9, ya que se prefiere para una mejor experiencia de depuración debido a las mejoras recientes en Go con respecto a la depuración.

Luego, vaya a Ejecutar | Editar configuraciones | Ir Aplicaciones | seleccione la configuración de ejecución que desea editar | Ejecute kind y cámbielo a Filefrom Package. Luego escriba el nombre del paquete, por ejemplo, github.com/ethereum/go-ethereum/cmd/gethy guarde la configuración. Luego vaya a Ejecutar | Depurar... y seleccione la configuración de ejecución que ha editado anteriormente y selecciónela como una ejecución de depuración.

También creé un pequeño video que debería guiarlo sobre cómo cambiar la Run kindconfiguración de ejecución, puede verlo aquí .

Gracias por proporcionar un video para ayudar a explicar, realmente ayudó a aclarar lo que querías decir. Desafortunadamente, no pareció resolver el problema: agregué más detalles en la actualización de mi pregunta.
Puede omitir el -linkmode en su caso, eso es útil principalmente en Windows y Go < 1.9. En algunos casos, funciona en Linux / OSX, también ayuda con la depuración, pero en este caso se puede omitir. Elimina eso y vuelve a intentarlo.