Существует ли какой-либо интерактивный отладчик golang? [закрытый]



название в значительной степени подводит итог. Я пытаюсь идти, и мне очень не хватает возможности устанавливать точки останова и входить/выходить/выходить столько, сколько я хочу в интерактивной среде. Я знаю, что могу использовать gdb для отладки Go, но это довольно раздражает по сравнению с использованием IDE, которая может подключаться к gdb для breakpointing.



Я попытался найти один и смог найти только плагины или небольшие IDE, которые имеют подсветку синтаксиса, но не отладку.

869   9  

9 ответов:

обновление: лично, в то время как GDB работает, я не поклонник его использования в Go, и это заставит вас выплюнуть немного крови. Проверьте некоторые из других ответов для хороших альтернатив.


Да, конечно :)

Go имеет отладчик (GDB)

здесь официальный учебник о том, как использовать его.

Если вы хотите "графическую отладку" (то есть установку точек останова в Редакторе), некоторые IDE позволяют вам это сделать (с помощью GDB фон.)

в частности, Eclipse, LiteIDE и Zeus позволяют устанавливать точки останова и отлаживать из вашей среды кодирования (источник). вот видео о том, как это сделать с Зевсом.

поддержка GDB для go имеет много проблем,которые не будут исправлены командой go.

для получения дополнительной информации, прочитайте сообщение Роба Пайка:

хотя мы постараемся сохранить базовую функциональность gdb (стек трассировки, печать значений) работа на поддерживаемых платформах, возможность чтобы использовать отладчик для понимания полной среды программы Go, будет вероятно, никогда не будет работать, и улучшение поддержки gdb не является приоритетом для команда.

они ищут другие варианты отладки, но пока не имеют конкретных планов. Документация устарела и runtime-gdb.pyскрипт идет с go 1.2 не работает для GDB, который был скомпилирован с поддержкой python3 (например, текущий Ubuntu).

обновление 2017: проект godebug, упомянутый ниже, Теперь официально заменен derekparker / delve.


оригинальный ответ:

теперь у вас (март 2015) Есть другой подход, основанный на инструментировании кода.

mailgun / godebug:

godebug использует источник генерация кода для того чтобы аппаратировать вашу программу с отладкой звонит.
go tool cover использует аналогичный подход к покрытию кода.

  • при выполнении godebug, он анализирует вашу программу, вызовы функций инструментов, объявления переменных и строки операторов и выводит полученный код где-то (в настоящее время либо stdout, либо на месте над исходными файлами).
  • когда вы запускаете этот измененный код, предполагая, что вы где-то ставите точку останова, вы можете пройти через нее и проверить переменные.

далее: оценка произвольных выражений Go и запись в переменные.


Обновление Июнь 2015:

хотя это может быть не так интерактивно, как" некоторые " могут надеяться, это все еще ценится (и имеет функцию" шаг в").
Смотрите "Go имеет отладчик-и это потрясающе!" (Cloudfare)

вот крутой бит: вместо борьбы с полудюжиной разных ptrace интерфейсы, которые не были бы портативными,godebug перезаписывает исходный код и вводит вызовы функций, такие как godebug.Line на каждой строке godebug.Declare при каждом объявлении переменной, и godebug.SetTrace для точек останова (т. е. везде, где вы вводите _ = "breakpoint").

Я нахожу это решение блестящим.
то, что вы получаете из него,-это (возможно, кросс-скомпилированный) двоичный файл с поддержкой отладки, который вы можете сбросить на промежуточный сервер так же, как и с обычным двоичным.

когда точка останова будет достигнута, программа остановится в строке и будет ждать вас на stdin.

это одинарная двоичная философия с нулевыми зависимостями Go, которую мы любим применять для отладки. Строит везде, работает везде, без необходимости использования инструментов или разрешений на сервере.

ifdef GODEBUG  
    GOPATH="${PWD}" go install github.com/mailgun/godebug
    GOPATH="${PWD}" ./bin/godebug build -instrument "${GODEBUG}" -o bin/rrdns rrdns

отладка-это просто make bin/rrdns GODEBUG=rrdns/... подальше.

обновление:

Я проверил его и рад сообщить, что версия: 2016.1.3, сборка: 145.1617.8, выпущено: 5 июня 2016 года работает с Delve! Вы можете скачать его здесь:https://www.jetbrains.com/idea/download/. также следуйте инструкциям по установке Delve здесь:https://github.com/derekparker/delve/tree/master/Documentation/installation

это немного шелушится. Сразу после того, как я получил приглашение на вход в систему OSX, началась интерактивная отладка рабочий. Иногда мне приходится отлаживать простой .перейти к программе, чтобы пнуть его. Но он работает и является лучшим интерактивным опытом отладки для Go, который я видел.

ОРИГИНАЛЬНЫЙ ПОСТ:

существует ли какой-либо интерактивный отладчик golang? Да.

существует ли какой-либо интерактивный отладчик golang, который стоит использовать? Нет.

настройка GDB на mac утомительна, но выполнима.

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

вы даже можете настроить IntelliJ для его использования.

единственное значение, что IntelliJ, LiteIDE, CGDB и др. кажется, что вы можете быстрее убедиться, что поддержка отладки GDB для Go чрезвычайно плоха.

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

вот пример того, что происходит при попытке распечатать значение структуры данных map[string]string с помощью CGDB:

(gdb) print params
 = (github.com/go-martini/martini.Params) 0x15582 <runtime.reentersyscall+450>

...что совершенно бесполезно.

далее, попробуйте этот:

(gdb) print params["UserID"]

...и вы получите "ошибка шины".

Delve (https://github.com/derekparker/delve) выглядит многообещающе, так как он написан в Go, но вы управляете им с помощью консоли, а не через IDE.

Я бы с удовольствием платить корпоративная версия IntelliJ (или любой другой IDE), которая сделала достойную работу, поддерживающую интерактивную отладку в Go.

на данный момент,fmt.Printf("%v", variable) примерно так же хорошо, как он получает.

EDIT

GO отладчик теперь простой плагин в IntelliJ или PyCharm, нет необходимости чтобы установить что-нибудь еще. Просто ищите плагин, заходим в плагин предпочтения.

оригинальный ответ (ноябрь 2015)

для тех, кто ищет последний по состоянию на конец ноября 2015 года:

get delve

https://github.com/derekparker/delve

и следуйте инструкциям по сборке / настройке инструкции:

https://github.com/derekparker/delve/wiki/Building

получить последнюю версию IntelliJ (15) или PyCharm (5)

https://www.jetbrains.com/idea/download/

и получить go-lang-плагин в IDE по вашему выбору:

Pycharm -> Preference -> plugins -> search for go
current version is Version: 0.10.749
IntelliJ -> Preference -> plugins -> search for go
current version is Version: 0.10.749
  1. Настройка нового проекта Go или импорт проекта.
  2. настройка вы идете SDK, как предложено
  3. настройка библиотеки Go (обычно в GOROOT / src
  4. настройка конфигурации запуска приложения в правом верхнем углу с помощью значка "play":
  5. изменить Конфигурации - > нажмите + - > Go Application

определите пакет или файл для запуска.

после завершения настройки значок воспроизведения и значок отладки теперь должны быть активны, и вы можете установить точку останова, часы и т. д... как обычно.

Ура

Я с удовольствием использую CGDB, немного ругает обертку вокруг GDB.

IDE ОТЛАДКА НА GO ВОЗМОЖНА (ОПЯТЬ ЖЕ), НА САМОМ ДЕЛЕ РАБОТАЕТ!

покопайся работает довольно хорошо на Mac OS X и поддерживается IntelliJ IDEA Go Lang plugin.

Я проверил это на Mac OSX, IntelliJ Idea 14, Go 1.5.1, Delve 0.5

Мне пришлось выполнить обычные циклы создания самозаверяющего сертификата, добавления его в системное кольцо и т. д. (требуется для запуска отладчика в Mac OS X). В конце концов, я установил Перейти проект внутри IntelliJ и был погашен в восстановлении обычных функций IDE+debugger: установка точек останова, проверка переменных, один шаг.

Это намного лучше, чем печатать значения для отладки кода.

  1. вариант один-GDB https://golang.org/doc/gdb

  2. покопайся

  3. Visual Studio Code С go plugin (все еще использует delve).

Я лично использую вариант 3. Для этого вам нужно будет иметь покопайся установлен.

это видео показывает отладку в действии: https://youtu.be/uBjoTxosSys?t=16m11s (Все видео очень интересно).

Я был очень доволен Гогландом (https://www.jetbrains.com/go/), который в основном Intellij с поддержкой Go. У него есть рабочий отладчик, который становится все лучше, когда они разрабатывают это. Я использую его с января 2017 года, и он был в основном стабильным для меня на 2016 MBP.

Goland-это кодовое название новой коммерческой IDE от JetBrains, направленной на обеспечение эргономичной среды для разработки Go.

Comments

    Ничего не найдено.