AKTUALIZACJA:
Sprawdziłem to i z przyjemnością informuję, że wersja: 2016.1.3, kompilacja: 145.1617.8, wydana: 5 czerwca 2016 r. Współpracuje z Delve! Możesz go pobrać tutaj: https://www.jetbrains.com/idea/download/ . Postępuj również zgodnie z instrukcjami instalacji Delve tutaj: https://github.com/derekparker/delve/tree/master/Documentation/installation
To trochę kruche. Zaraz po wyświetleniu monitu o logowanie do OSX, interaktywne debugowanie zaczęło działać. Czasami muszę zdebugować prosty program .go, aby go uruchomić. Ale działa i jest najlepszym interaktywnym narzędziem do debugowania dla Go, jakie widziałem.
ORYGINALNY POST:
Czy istnieje jakiś interaktywny debugger golang? Tak.
Czy istnieje jakiś interaktywny debugger golang, którego warto używać? Nie.
Konfiguracja GDB na komputerze Mac jest żmudna, ale wykonalna.
Jednak gdy zaczniesz go używać, szybko zorientujesz się, że po prostu zmarnowałeś czas na jego instalację.
Możesz nawet skonfigurować IntelliJ, aby go używać.
Jedyną wartością, którą wydają się zapewniać IntelliJ, LiteIDE, CGDB itp., Jest to, że można szybciej ustalić, że obsługa debugowania GDB w Go jest bardzo słaba.
Możesz go użyć do przejścia przez jakiś kod Go, ale spróbuj wydrukować wartość czegokolwiek innego niż bardzo proste wartości zmiennych, a będziesz tracić czas na szukanie porządnego debuggera.
Oto przykład tego, co się dzieje, gdy próbujesz wydrukować wartość struktury danych w postaci łańcucha map [string] przy użyciu CGDB:
(gdb) print params
$1 = (github.com/go-martini/martini.Params) 0x15582 <runtime.reentersyscall+450>
... co jest całkowicie bezużyteczne.
Następnie spróbuj tego:
(gdb) print params["UserID"]
... a otrzymasz komunikat „Błąd magistrali”.
Delve ( https://github.com/derekparker/delve ) wygląda obiecująco, ponieważ jest napisane w Go, ale sterujesz nią za pomocą konsoli, a nie przez IDE.
Chętnie zapłaciłbym za wersję IntelliJ dla przedsiębiorstw (lub jakiekolwiek inne IDE), które wykonało przyzwoitą robotę, wspierając interaktywne debugowanie w Go.
Na razie fmt.Printf("%v", variable)
jest tak dobre, jak to tylko możliwe.