Tytuł w dużym stopniu to podsumowuje. Wypróbowuję Go i naprawdę brakuje mi możliwości ustawiania punktów przerwania i wchodzenia / przekraczania / wychodzenia tak bardzo, jak chcę, w interaktywnym środowisku. Wiem, że mogę używać gdb do debugowania Go, ale jest to dość denerwujące w porównaniu do używania IDE, które można podłączyć do gdb w celu określenia punktów przerwania.
Próbowałem znaleźć jeden i mogłem znaleźć tylko wtyczki lub małe IDE, które mają podświetlanie składni, ale nie mają debugowania.
Odpowiedzi:
Aktualizacja : Osobiście, chociaż GDB działa, nie jestem fanem używania go w Go i sprawi, że wyplujesz trochę krwi. Sprawdź inne odpowiedzi, aby znaleźć dobre alternatywy.
Tak oczywiście :)
Go ma debugger (GDB)
Oto oficjalny poradnik, jak go używać.
Jeśli chcesz „debugowania graficznego” (czyli ustawiania punktów przerwania w edytorze), niektóre IDE pozwalają to zrobić (z GDB w tle).
W szczególności Eclipse, LiteIDE i Zeus pozwalają ustawić punkty przerwania i debugować w środowisku kodowania (źródło) . Oto film o tym, jak to zrobić z Zeusem .
źródło
godebug
co było całkiem miłe ostatnim razem.Obsługa GDB dla go ma wiele problemów, które nie zostaną naprawione przez zespół go.
Aby uzyskać więcej informacji, przeczytaj post Roba Pike'a :
Szukają innych opcji debugowania, ale nie mają na razie konkretnych planów. Dokumentacja jest nieaktualna, a
runtime-gdb.py
skrypt dołączony do go 1.2 nie działa dla GDB, który został skompilowany z obsługą Python3 (na przykład obecny Ubuntu).źródło
Aktualizacja 2017: projekt godebug, o którym mowa poniżej, został oficjalnie zastąpiony przez derekparker / delve .
Oryginalna odpowiedź:
Masz teraz (marzec 2015 r.) Inne podejście, oparte na instrumentowaniu kodu.
mailgun / godebug :
Aktualizacja czerwiec 2015:
Chociaż może nie być tak interaktywny, jak mogliby mieć nadzieję „niektórzy”, nadal jest doceniany (i ma funkcję „wkraczania” ).
Zobacz „ Go ma debugger - i jest niesamowity! ” (Cloudfare)
ifdef GODEBUG GOPATH="${PWD}" go install github.com/mailgun/godebug GOPATH="${PWD}" ./bin/godebug build -instrument "${GODEBUG}" -o bin/rrdns rrdns
źródło
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.źródło
EDYTOWAĆ
Oryginalna odpowiedź (listopad 2015 r.)
dla poszukujących aktualności na koniec listopada 2015:
dostać się dogłębnie
https://github.com/derekparker/delve
i postępuj zgodnie z instrukcjami kompilacji / konfiguracji:
https://github.com/derekparker/delve/wiki/Building
Pobierz najnowszy IntelliJ (15) lub PyCharm (5)
https://www.jetbrains.com/idea/download/
i pobierz wtyczkę go-lang-plugin w wybranym 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
Zdefiniuj pakiet lub plik do uruchomienia.
Po zakończeniu konfiguracji ikona Odtwórz i ikona debugowania powinny być teraz aktywne i możesz ustawić punkt przerwania, zegarki itp. Jak zwykle.
Twoje zdrowie
źródło
Z radością używam CGDB, małego opakowania przekleństw wokół GDB.
źródło
IDE DEBUG ON GO JEST MOŻLIWA (PONOWNIE), NAPRAWDĘ DZIAŁA !
Delve działa dość dobrze na Mac OS X i jest obsługiwany przez wtyczkę IntelliJ IDEA Go Lang .
Przetestowałem to na Mac OSX, IntelliJ Idea 14, Go 1.5.1, Delve 0.5
Musiałem przejść przez zwykłe pętle tworzenia certyfikatu z podpisem własnym, dodawania go do pierścienia systemowego itp. (Wymagane do uruchomienia debugera w systemie Mac OS X). Na koniec ustawiłem projekt GO w IntelliJ i otrzymałem wynagrodzenie za odzyskanie zwykłych funkcji debuggera IDE +: ustawianie punktów przerwania, inspekcja zmiennych, pojedynczy krok.
To o wiele lepsze niż drukowanie wartości w celu debugowania kodu.
źródło
Opcja pierwsza - GDB https://golang.org/doc/gdb
Sięgać
Visual Studio Code z jego wtyczką go (nadal używa delve).
Osobiście korzystam z opcji 3. W tym celu musisz mieć zainstalowaną aplikację delve .
Ten film pokazuje debugowanie w akcji: https://youtu.be/uBjoTxosSys?t=16m11s (całe wideo jest bardzo interesujące).
źródło
Byłem całkiem zadowolony z Gogland ( https://www.jetbrains.com/go/ ), który jest w zasadzie Intellij z obsługą Go. Ma działający debugger, który jest coraz lepszy, gdy go rozwijali. Używam go od stycznia 2017 roku i jest dla mnie stabilny na MBP 2016.
źródło