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.

Author: Daniel Williams, 2013-05-11

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.

 37
Author: Benjamin Gruenbaum,
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.pypojawi 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).

 29
Author: metakeule,
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 ptrace interfejsów, które nie byłyby Przenośne, godebug przepisuje kod źródłowy i wstrzykuje wywołania funkcji, takie jak godebug.Line na każdej linii, godebug.Declare na każdej deklaracji zmiennej i godebug.SetTrace dla punkty przerwania (np. gdziekolwiek wpiszesz _ = "breakpoint").

Uważam to rozwiązanie za genialne.
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.

 23
Author: VonC,
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.
 15
Author: l3x,
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
  1. Skonfiguruj Nowy Projekt Go lub zaimportuj projekt.
  2. Konfiguracja Przejdź SDK zgodnie z monitem
  3. Konfiguracja biblioteki Go (zwykle w GOROOT / src
  4. Ustaw konfigurację uruchamiania aplikacji w prawym górnym rogu za pomocą ikony "Odtwórz":
  5. 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

 9
Author: MrE,
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.

 8
Author: pjvds,
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.

 7
Author: Michele Giuseppe Fadda,
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
  1. Opcja pierwsza-GDB https://golang.org/doc/gdb

  2. Delve

  3. Visual Studio Code z wtyczką go (nadal używa delve).

Ja osobiście korzystam z opcji 3. W tym celu należy zainstalować delve.

Ten film pokazuje debugowanie w akcji: https://youtu.be/uBjoTxosSys?t=16m11s [[4]} (cały film jest bardzo ciekawy).

 7
Author: Pavel Nikolov,
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.

 1
Author: myyk,
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