Czy istnieje jakiś interaktywny debugger golang? [zamknięte]
Tytuł całkiem to podsumowuje. Próbuję go i naprawdę brakuje mi możliwości ustawiania punktów przerwania i wchodzenia / przekraczania / Wyłączania tak bardzo, jak chcę w interaktywnym środowisku. Wiem, że mogę używać gdb do debugowania Go, ale to jest dość denerwujące w porównaniu z używaniem IDE, które można podłączyć do gdb do wykrywania przerwań.
Próbowałem szukać jednego i mogłem znaleźć tylko wtyczki lub małe IDE, które mają podświetlanie składni, ale bez debugowania.
9 answers
Update: osobiście, podczas gdy GDB działa, nie jestem fanem używania go w Go i sprawi, że będziesz pluł trochę krwi. Sprawdź inne odpowiedzi na dobre alternatywy.
Tak, oczywiście:)
Go ma debugger (GDB)
Otooficjalny samouczek jak z niego korzystać.
Jeśli chcesz 'debugowanie graficzne' (czyli ustawianie punktów przerwania w edytorze), niektóre IDE pozwalają ci to zrobić (z GDB w tle).
In specific, Eclipse, LiteIDE i Zeus pozwalają ci ustawiać punkty przerwania i debugować z twojego środowiska kodowania (source). [[18]} Oto film Jak to zrobić z Zeusem.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-17 08:11:52
Obsługa GDB dla go ma wiele problemów, które nie zostaną naprawione przez zespół go.
Aby uzyskać więcej informacji, przeczytaj post by Rob Pike :
Chociaż postaramy się zachować podstawową funkcjonalność gdb (stack ślady, wartości drukowania) pracujące na obsługiwanych platformach, możliwość aby użyć debuggera, aby zrozumieć pełne środowisko programu Go, będzie prawdopodobnie nigdy nie działa, a poprawa obsługi gdb nie jest priorytetem dla drużynowo
Szukają dla innych opcji debugowania, ale nie mają już konkretnych planów.
Dokumentacja jest nieaktualna, a skrypt runtime-gdb.py
pojawi się wraz z go 1.2
nie działa w przypadku GDB, które zostało skompilowane z obsługą python3 (na przykład obecne Ubuntu).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-30 11:34:28
Aktualizacja 2017: projekt godebug wymieniony poniżej został oficjalnie zastąpiony przez derekparker/delve .
Oryginalna odpowiedź:
Teraz (marzec 2015) masz inne podejście, oparte na instrumentowaniu kodu.
Mailgun / godebug:
godebug
wykorzystuje generowanie kodu źródłowego do instrumentowania programu za pomocą debugowania wywołań.go tool cover
ma podobne podejście do pokrycia kodu.
- kiedy uruchamiasz
godebug
, parsuje Twój program, wyświetla wywołania funkcji, deklaracje zmiennych i wiersze instrukcji i wysyła wynikowy kod gdzieś (obecnie albo stdout lub w miejscu nad oryginalnymi plikami).- kiedy uruchomisz ten zmodyfikowany kod, zakładając, że umieścisz gdzieś punkt przerwania, możesz przejść przez niego i sprawdzić zmienne.
Coming later: Oceń dowolne wyrażenia Go i zapisz do zmiennych.
Update Czerwiec 2015:
Chociaż może nie być tak interaktywny, jak "niektórzy" mogą mieć nadzieję, nadal jest doceniany (i ma funkcję "krok w krok" ).
Zobacz " Go ma debugger-i to jest niesamowite!" (Cloudfare)
Oto fajny bit: zamiast zmagać się z pół tuzina różnych
Uważam to rozwiązanie za genialne.ptrace
interfejsów, które nie byłyby Przenośne,godebug
przepisuje kod źródłowy i wstrzykuje wywołania funkcji, takie jakgodebug.Line
na każdej linii,godebug.Declare
na każdej deklaracji zmiennej igodebug.SetTrace
dla punkty przerwania (np. gdziekolwiek wpiszesz_ = "breakpoint"
).
to, co otrzymujesz, to (prawdopodobnie skompilowany krzyżowo) plik binarny z obsługą debugowania, który możesz upuścić na serwerze testowym, tak jak w przypadku zwykłego pliku binarnego.Po osiągnięciu punktu przerwania program zatrzyma się w linii i będzie czekał na Ciebie na stdin.
To jedno-binarna, zero-zależna filozofia Go, którą uwielbiamy stosować do debugowania. Buduje wszędzie, działa wszędzie, bez potrzeby użycia narzędzi lub uprawnień na serwerze.
ifdef GODEBUG
GOPATH="${PWD}" go install github.com/mailgun/godebug
GOPATH="${PWD}" ./bin/godebug build -instrument "${GODEBUG}" -o bin/rrdns rrdns
Debugowanie jest tylko
make bin/rrdns GODEBUG=rrdns/...
dalej.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-22 05:15:32
Aktualizacja:
Sprawdziłem to i jestem szczęśliwy, aby zgłosić, że wersja: 2016.1.3, Build: 145.1617.8, wydany: czerwiec 5, 2016 działa 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
Jest trochę łuszcząca się. Zaraz po tym, jak dostałem monit logowania OSX, interaktywne debugowanie zaczęło działać. Sometimes, I trzeba debugować proste .uruchom program, aby go uruchomić. Ale to działa i jest najlepszym interaktywnym doświadczeniem debugowania Go, jakie widziałem.ORIGINAL POST:
Czy istnieje jakiś interaktywny debugger golang? Tak.
Czy istnieje jakiś interaktywny debugger golang, którego warto używać? Nie.
[3]}Konfiguracja GDB na Macu jest żmudna, ale wykonalna.Jednak, gdy zaczniesz go używać, wkrótce zdasz sobie sprawę, że po prostu zmarnowałeś czas na instalację to.
Możesz nawet skonfigurować IntelliJ, aby go używać.
Jedyna wartość, którą IntelliJ, LiteIDE, CGDB itp. wydaje się, że można szybciej ustalić, że obsługa debugowania GDB dla Go jest bardzo słaba.
Możesz go użyć, aby przejść przez jakiś kod Go, ale spróbuj wydrukować wartość czegokolwiek innego niż bardzo proste wartości zmiennych, a będziesz marnować czas, pragnąc przyzwoitego debugera.
Oto przykład, co się dzieje, gdy próbujesz wydrukować wartość mapy [string] łańcuchowa struktura danych za pomocą 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"]
...i dostaniesz "błąd autobusu".
Delve ( https://github.com/derekparker/delve ) wygląda obiecująco, ponieważ jest napisany w Go, ale jeździsz nim za pomocą konsoli, a nie przez IDE.
Chętnie zapłaciłbym za wersję enterprise IntelliJ (lub jakiekolwiek inne IDE), która wykonała przyzwoitą pracę obsługującą debugowanie interaktywne w Idź.
Jak na razie, jest tak dobrze, jak tylko się da.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-24 00:33:13
EDIT
Go debugger jest teraz prostą Wtyczką w IntelliJ lub PyCharm, nie ma potrzeby aby zainstalować cokolwiek innego. Wystarczy poszukać wtyczki Go w wtyczce preferencje.
Oryginalna odpowiedź (Listopad 2015)
Dla tych, którzy szukają najnowszego stanu na koniec listopada 2015:
Get delve
https://github.com/derekparker/delve
I postępuj zgodnie z instrukcjami build / setup:
https://github.com/derekparker/delve/wiki/Building
Pobierz najnowszy IntelliJ (15) lub PyCharm (5)
https://www.jetbrains.com/idea/download/
I pobierz go-Lang-plugin w IDE do wyboru:
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
- Skonfiguruj Nowy Projekt Go lub zaimportuj projekt.
- Konfiguracja Przejdź SDK zgodnie z monitem
- Konfiguracja biblioteki Go (zwykle w GOROOT / src
- Ustaw konfigurację uruchamiania aplikacji w prawym górnym rogu za pomocą ikony "Odtwórz":
- Edycja konfiguracji - > kliknij + - > Przejdź do aplikacji
Zdefiniuj pakiet lub plik do uruchomienia.
Po zakończeniu konfiguracji, gra ikona i ikona debugowania powinny być teraz aktywne i możesz ustawić punkt przerwania, zegarki itp... jak zwykle.
Cheers
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-15 12:39:26
Z chęcią korzystam z CGDB, trochę przekleństw wokół GDB.
- Oficjalna strona: CGDB-the curses debugger
- wideo: łatwiej debugować w wierszu poleceń za pomocą CGDB
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-01 08:33:03
DEBUGOWANIE IDE W RUCHU JEST MOŻLIWE (ZNOWU), FAKTYCZNIE DZIAŁA !
Delve działa dość dobrze na Mac OS X i jest wspierany przez IntelliJ IDEA Go Lang plugin .
Testowałem to na Mac OSX, IntelliJ Idea 14, Go 1.5.1, Delve 0.5
Musiałem uruchomić przez zwykłe pętle tworzenia certyfikatów z własnym podpisem, dodawania ich do pierścienia systemowego itp. (wymagane do uruchomienia debuggera w Mac OS X). Na koniec ustawiłem projekt GO wewnątrz IntelliJ i został zwrócony w odzyskiwanie zwykłych funkcji debuggera IDE+: ustawianie punktów przerwania, sprawdzanie zmiennych, pojedynczy krok.
To o wiele lepsze niż drukowanie wartości w celu debugowania kodu.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-16 22:03:20
Opcja pierwsza-GDB https://golang.org/doc/gdb
Visual Studio Code z wtyczką go (nadal używa delve).
Ten film pokazuje debugowanie w akcji: https://youtu.be/uBjoTxosSys?t=16m11s [[4]} (cały film jest bardzo ciekawy).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-20 03:25:54
Byłem całkiem zadowolony z Goglanda ( https://www.jetbrains.com/go/), który jest w zasadzie Intellij z obsługą Go. Ma działający Debugger, który staje się coraz lepszy, ponieważ opracowują to. Używam go od stycznia 2017 i jest dla mnie głównie stabilny na MBP 2016.
Goland to nazwa kodowa nowego komercyjnego IDE firmy JetBrains, mającego na celu zapewnienie ergonomicznego środowiska dla rozwoju Go.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-30 05:59:58