Как отлаживать код Geth go из Intellij Webstorm?

Я хотел бы иметь возможность отлаживать код Geth Go, используя Intellij Webstorm.

В идеале я хотел бы запустить частный узел Geth внутри Webstorm и установить точку останова, но я также согласен на удаленное подключение к локальному узлу, который я запустил из командной строки.

Мне кажется, что точкой входа для 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

Может ли кто-нибудь помочь мне с тем, как именно я могу запустить Geth из Webstorm, то есть не из скомпилированного, 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"
похоже, вы не получили зависимости
ты решил это? У меня такая же проблема. Я компилирую с помощью стандартного компилятора go. Он не может найти файл конфигурации и другие переменные не установлены, как и вы. Я бегу с go run ... geth.go. Вы узнали, как удалить эти ошибки?
Да, мне удалось решить проблему. Я заметил, что не был на Go 1.9, и после того, как я обновился до последней версии Go, ошибки исчезли.

Ответы (1)

Сначала убедитесь, что у вас установлена ​​последняя версия EAP 15, 173.2696.28, и вы используете последнюю версию Go, 1.9, так как это предпочтительнее для более удобной отладки из-за недавних улучшений Go в отношении отладки.

Затем перейдите в «Выполнить» | Редактировать конфигурации | Перейти приложений | выберите конфигурацию запуска, которую вы хотите изменить | Запустите kind и измените его на Filefrom Package. Затем введите имя пакета, например, github.com/ethereum/go-ethereum/cmd/gethи сохраните настройки. Затем перейдите в «Выполнить» | Отладка... и выберите конфигурацию запуска, которую вы редактировали ранее, и выберите ее в качестве запуска отладки.

Я также создал небольшое видео, которое поможет вам изменить Run kindконфигурацию запуска, вы можете посмотреть его здесь .

Спасибо за предоставленное видео, чтобы помочь объяснить - это действительно помогло прояснить, что вы имели в виду. К сожалению, похоже, это не решило проблему - я добавил больше деталей в обновлении своего вопроса.
Вы можете опустить -linkmode в вашем случае, это полезно в основном для Windows и Go < 1.9. В некоторых случаях он работает на Linux / OSX, он также помогает при отладке, но в этом случае его можно не использовать. Удалите это и повторите попытку.