ОНОВЛЕННЯ:
Я перевірив це і радий повідомити, що Версія: 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 для її запуску. Але це працює і є найкращим досвідом інтерактивної налагодження для Go, який я бачив.
ОРИГІНАЛЬНА ПОСТА:
Чи існує якийсь інтерактивний налагоджувач golang? Так.
Чи існує який-небудь інтерактивний налагоджувач golang, який варто використовувати? Немає.
Налаштування GDB на Mac є нудним, але здійсненним.
Однак, як тільки ви почнете користуватися ним, ви незабаром зрозумієте, що ви просто витратили час на його встановлення.
Ви навіть можете налаштувати IntelliJ на його використання.
Єдине значення, яке, схоже, надають IntelliJ, LiteIDE, CGDB тощо - це те, що ви можете швидше переконатися, що підтримка відладки GDB для Go надзвичайно погана.
Ви можете використовувати його, щоб пройти через якийсь код Go, але спробуйте надрукувати значення будь-чого іншого, крім дуже простих значень змінних, і ви витратите свій час, бажаючи гідного налагоджувача.
Ось приклад того, що відбувається, коли ви намагаєтесь надрукувати значення структури даних рядка map [рядок] за допомогою CGDB:
(gdb) print params
$1 = (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)
це приблизно так само добре, наскільки це стає.