Czy istnieje interfejs GUI C ++ gdb dla systemu Linux? [Zamknięte]

210

W skrócie: Czy ktoś wie o graficznym interfejsie użytkownika dla gdb, który zapewnia go na równi z zestawem funkcji dostępnym w najnowszej wersji Visual C ++ lub blisko niego?

Szczegółowo: Jako ktoś, kto spędził dużo czasu na programowaniu w systemie Windows, jednym z większych potknięć, które znalazłem, kiedy tylko muszę kodować C ++ w Linuksie, jest to, że debugowanie czegokolwiek za pomocą wiersza poleceń gdb zajmuje mi kilka razy dłużej niż w Visual Studio i wydaje się, że nie poprawia się wraz z praktyką. Niektóre rzeczy są po prostu łatwiejsze lub szybsze do wyrażenia graficznego.

W szczególności szukam GUI, które:

  • Obsługuje wszystkie podstawowe elementy, takie jak przechodzenie i kodowanie, obserwowanie zmiennych i punktów przerwania
  • Rozumie i może wyświetlać zawartość złożonych i zagnieżdżonych typów danych C ++
  • Nie myli się i najlepiej potrafi inteligentnie przechodzić przez szablony kodu i struktury danych, wyświetlając odpowiednie informacje, takie jak typy parametrów
  • Może obsługiwać aplikacje wątkowe i przełączać się między różnymi wątkami, aby przejść lub wyświetlić stan
  • Potrafi obsłużyć dołączanie do już rozpoczętego procesu lub odczyt zrzutu pamięci, oprócz uruchamiania programu w gdb

Jeśli taki program nie istnieje, chciałbym usłyszeć o doświadczeniach ludzi z programami, które spełniają przynajmniej niektóre punkty kuli. Czy ktokolwiek ma jakieś propozycje?

Edycja:
Wymienienie możliwości jest świetne, a ja wezmę to, co mogę uzyskać, ale byłoby jeszcze bardziej pomocne, gdybyś mógł uwzględnić w swoich odpowiedziach:
(a) Czy faktycznie użyłeś tego GUI, a jeśli tak, to , jakie pozytywne / negatywne opinie na ten temat masz.
(b) Jeśli wiesz, które z wyżej wymienionych funkcji są / nie są obsługiwane

Listy są łatwe do zdobycia, strony takie jak ta są świetne, ponieważ możesz poznać osobiste doświadczenia użytkowników z aplikacjami.

HappyDude
źródło
21
+1 dla „Witryny takie jak ta są świetne, ponieważ możesz dowiedzieć się o osobistych doświadczeniach ludzi”. Obecnie zbyt wielu ludzi robi zrzut listy, który IMHO całkowicie nie rozumie.
kizzx2
1
Na temat inżynierii odwrotnej: reverseengineering.stackexchange.com/questions/1392/...
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
Zobacz listę interfejsów gdb tutaj: sourceware.org/gdb/wiki/GDB%20Front%20Ends i wypróbuj pierwszy z listy. Wygląda bardzo obiecująco i nowocześnie i jest wieloplatformowy, ponieważ jest oparty na przeglądarce: gdbgui.com .
Gabriel Staples

Odpowiedzi:

55

Nie znajdziesz niczego, co nakładałoby się na GDB, które konkurowałoby z surową mocą debuggera Visual Studio. Jest po prostu zbyt potężny i po prostu zbyt dobrze zintegrowany z IDE.

Alternatywą dla systemu Linux jest wypróbowanie DDD, jeśli wolisz darmowe oprogramowanie.

Vicent Marti
źródło
2
WinDBG jest znacznie lepszy niż program Visual Studio. Debuger studia wizualnego opiera się na tej samej architekturze co WinDBG. Powiedziawszy to, GDB nie ma o co pytać, porównując go z Windbg. Świetny byłby graficzny debugger lepszy niż DDD. Eclipse CDT to dobra alternatywa. Myślę, że był interfejs użytkownika KDE
bigmonachus
114
O popatrz. Odpowiedź, która zawiera roszczenie bez poparcia go wcale. Dziwne jest również to, że odpowiedź, która nie odpowiada na pytanie, została zaakceptowana.
alternatywny
3
dla każdego, kto tu przyjeżdża i szuka prawdziwej odpowiedzi, wiedz, że ddd to śmieci. Najlepszym graficznym interfejsem debuggera dla systemu Linux, który znalazłem, jest IDA, która nie jest wolnym oprogramowaniem.
bkconrad
1
Odpowiedz jak najlepiej na pytanie lub nic nie mów. Korzystając z obu, Visual Studio jest bardziej funkcjonalny, ale DDD jest wystarczająco dobry, że nie brakuje mi VS. Niestety DDD pokazuje swój wiek.
Alan De Smet
6
Ten post musi zostać zaktualizowany / ulepszony. Qt Creator jest niesamowity, na równi z Visual Studio.
vharron
85

Eclipse CDT zapewni wrażenia porównywalne z używaniem Visual Studio. Używam Eclipse CDT na co dzień do pisania kodu oraz debugowania lokalnych i zdalnych procesów.

Jeśli nie jesteś zaznajomiony z używaniem IDE opartego na Eclipse, GUI trochę się przyzwyczai. Jednak po zrozumieniu pomysłów GUI, które są unikalne dla Eclipse (np. Perspektywy), korzystanie z narzędzia staje się przyjemnym doświadczeniem.

Narzędzie CDT zapewnia porządny indeksator C / C ++, który pozwala szybko znaleźć odniesienia do metod w bazie kodu. Zapewnia również ładne narzędzie do rozszerzania makr i ograniczone wsparcie refaktoryzacji.

Jeśli chodzi o obsługę debugowania, CDT jest w stanie zrobić wszystko na liście, z wyjątkiem odczytu zrzutu podstawowego (może to obsługiwać, ale nigdy nie próbowałem użyć tej funkcji). Ponadto moje doświadczenie z debugowaniem kodu przy użyciu szablonów jest ograniczone, więc nie jestem pewien, jakie doświadczenie zapewni CDT w tym zakresie.

Aby uzyskać więcej informacji na temat debugowania przy użyciu Eclipse CDT, możesz sprawdzić następujące przewodniki:

Jon Ball
źródło
10
Odczytywanie zrzutów rdzenia jest obsługiwane. (Nazywa się to debuggerem Postmortem.)
Josh Kelley
Mam lepsze doświadczenie w debugowaniu Eclipse CDT niż w Visual Studios. Jednak nie dałem MSVC zbyt dużej szansy.
notlesh
3
Myślę, że QtCreator powinien być wymieniony obok Eclipse, ponieważ jest porównywalny.
nonsensickle
78

gdb -tui działa dobrze, jeśli chcesz coś z GUI, ale nadal oparte na znakach.


źródło
45
Możesz także przejść do trybu TUI (tekstowy interfejs użytkownika) w trybie gdb, używając polecenia „-”. Powrót do wiersza polecenia to Ctrl-X Ctrl-A. W trybie TUI w górę, w dół, w lewo i w prawo przechodź przez źródło. Użyj Ctrl-P, Ctrl-N, Ctrl-F i Ctrl-B, aby poruszać się po historii wiersza poleceń.
Ben Combee,
Właśnie tego szukałem. Moc wiersza polecenia gdb z kilkoma przydatnymi widokami, które aktualizują się, gdy się poruszam.
Kevin Cox,
7
.Gdbinit na steriods daje naprawdę imponujący graficzny interfejs użytkownika oparty na postaci, z kolorem: github.com/cyrus-and/gdb-dashboard
cs01
Lubię gdb-dashboard, ale muszę też wspomnieć o voltronie .
nonsensickle
3
@Barry dzięki. Dla każdego, kto jest ciekawy, oto link: github.com/cs01/gdbgui . Ma strukturę wyświetlania danych podobną do DDD, architekturę klient / serwer do łatwego debugowania zdalnych komputerów bez konieczności przekazywania X, a także możliwość eksploracji złożonych zmiennych itp.
cs01
47

Sprawdź debugger Nemiver C / C ++ . Jest łatwy do zainstalowania w Ubuntu (narzędzia deweloperskie / debugowanie).

Aktualizacja: nowy link.

Sergey Shandar
źródło
Absolutnie fantastyczny , obsługiwany również przez apt: 'apt-get install nemiver'. Mój jedyny spór polega na tym, że kompilacja po awarii nie powiodła się z powodu „Nie znaleziono pakietu gconf-2.0”.
J Evans,
interfejs jest dość przejrzysty i czytelny, ale czasami ulega awarii podczas korzystania z możliwości interfejsu v0.9.6. Akceptuje także parametry debugowanej aplikacji, czego nadal nie mogę zrobić.
Aquarius Power
Dostępne również w Fedorze 30 (przynajmniej). Właśnie zaryzykowałem to pytanie i nemiver.
user3236841,
31

Qt Creator wydaje się dobrą rzeczą. Kolega pokazał mi jeden ze sposobów skonfigurowania go do debugowania:

  • Utwórz nowy projekt „Import projektu opartego na Makefile”.
  • Wskaż go na folder projektu głównego (pod nim zaindeksuje źródła i jest imponująco szybki).
  • Przejdź do ustawień projektu i dodaj konfigurację uruchamiania, a następnie określ plik wykonywalny, który chcesz debugować, i jego argumenty.
  • Wydaje się, że Qt Creator nalega na zbudowanie projektu przed jego debugowaniem. Jeśli nie chcesz tego lub nie korzystaj z make, po prostu przejdź do projektów -> kompilacja (lewy panel), a następnie na prawym panelu w „Kompilacjach” usuń wszystkie kroki, w tym krok domyślnie, gdy stworzyłeś projekt.

Może to wydawać się trochę pracochłonne przy debugowaniu aplikacji, którą już skompilowałem, ale warto. Debuger pokazuje wątki, stosy i zmienne lokalne w podobny sposób jak Visual Studio, a nawet używa wielu takich samych skrótów klawiaturowych. Wygląda na to, że dobrze obsługuje szablony, przynajmniej std :: string i std :: map. Dołączanie do istniejących procesów i zrzutów pamięci wydaje się być obsługiwane, chociaż jeszcze tego nie testowałem.

Pamiętaj, że korzystałem z niego przez mniej niż godzinę, ale jestem pod wrażeniem.

Soulman
źródło
29

Nienawidzę idei rozwoju Windows, ale debugger VC ++ jest jednym z najlepszych, jakie widziałem. Nie znalazłem interfejsu GUI zbliżonego do VC.

GDB jest niesamowity, gdy naprawdę się przyzwyczaisz. Użyj go wystarczająco mocno, a staniesz się bardzo biegły. Mogę śmigać po programie, wykonując wszystkie wymienione czynności bez większego wysiłku. Zajęło mi to około miesiąca cierpienia z powodu łącza SSH do zdalnego serwera, zanim byłem biegły. Nigdy bym nie wrócił.

DDD jest naprawdę potężny, ale był dość błędny. Znalazłem, że zamarzał dość często, gdy otrzymywał wiadomości z GDB, że nie grokował. To dobrze, ponieważ ma okno interfejsu gdb, dzięki czemu można zobaczyć, co się dzieje, a także bezpośrednio wchodzić w interakcje z gdb. DDD nie może być używany w zdalnej sesji X w moim środowisku (prawdziwy problem, ponieważ siedzę przy cienkim kliencie, gdy robię programowanie w Uniksie) z jakiegoś powodu, więc jest dla mnie.

KDevelop postępował zgodnie z typowym stylem KDE i odsłonił WSZYSTKO dla użytkownika. Nigdy też nie miałem szczęścia debugowania programów innych niż KDevelop w KDevelop.

Gnat Programming Studio (GPS) jest właściwie całkiem dobrym interfejsem do GDB. Nie tylko zarządza projektami Ada, więc warto wypróbować, jeśli potrzebujesz debuggera.

Możesz użyć Eclipse, ale jest dość ciężki, a wielu doświadczonych ludzi z Uniksem, z którymi współpracowałem (włącznie ze mną), nie dba o jego interfejs, który nie tylko STFU zejdzie ci z drogi. Zaćmienie wydaje się również zajmować dużo miejsca i biegać jak pies.

Adam Hawes
źródło
2
Chciałem tylko podłączyć mój projekt, gdbgui ( github.com/cs01/gdbgui ). Jest to architektura klient / serwer, więc dobrze działa debugowanie zdalnych maszyn bez wymaganej sesji X. Ma również terminal do bezpośredniej interakcji z GDB i ma wizualizacje do wyświetlania struktur danych, podobnych do DDD.
cs01
Porównania z zaletami i wadami opartymi na doświadczeniu. Właśnie tego potrzebuje to pytanie. ty
Heath Raftery
27

Używam cgdb, prosty i użyteczny

dorsz
źródło
16

Często używam DDD i jest dość potężny, kiedy nauczysz się go używać. Powiedziałbym, że nie używaj go przez X w sieci WAN, ponieważ wydaje się, że robi on wiele niepotrzebnych aktualizacji ekranu.

Ponadto, jeśli nie jesteś związany z GDB i nie masz nic przeciwko zebraniu trochę gotówki, wtedy wypróbuję TotalView. Ma nieco stromą krzywą uczenia się (może zdecydowanie być bardziej intuicyjna), ale jest to najlepszy debuger C ++, jakiego kiedykolwiek używałem na dowolnej platformie, i można go rozszerzyć o introspekcję twoich obiektów w niestandardowy sposób (umożliwiając w ten sposób przeglądanie Lista STL jako rzeczywista lista obiektów, a nie grupa mylących wewnętrznych elementów danych itp.)

Nick Bastin
źródło
Nie mogę w ogóle zmusić DDD do pracy nad zdalnym X; po prostu zawiesza się z błędami Xlib na moim cienkim kliencie :(
Adam Hawes
totalview wygląda jak realna alternatywa. Nie uważam DDD za lepszy niż interfejs gdb curses.
deft_code
8

Sprawdź projekt Eclipse CDT. Jest to wtyczka do Eclipse ukierunkowana na rozwój C / C ++ i zawiera dość bogatą perspektywę debugowania (która za kulisami używa GDB). Jest dostępny na wielu różnych platformach.

użytkownik14636
źródło
7

Podobnie wygodny jak frontend gdb eclipse jest frontend emacsa, ściśle powiązany z IDE emacsa. Jeśli już pracujesz z emacsem, spodoba ci się:

GDB Emacs Frontend

Johannes Schaub - litb
źródło
6

Użyłem KDbg (działa tylko w KDE).

codeguru
źródło
3
KDbg nie ogranicza się do KDE.
nobar
To jest niesamowite . Zastanawiam się, gdzie to było przez cały ten czas.
edmz
5

Wypróbowałem kilka różnych GUI dla GDB i odkryłem, że DDD jest lepszym z nich. I chociaż nie mogę komentować innych ofert innych niż gdb dla systemu Linux, użyłem wielu innych debuggerów na innych platformach.

gdb robi większość rzeczy, które masz na liście życzeń. DDD daje im ładniejszy front. Na przykład przełączanie wątków jest prostsze. Ustawianie punktów przerwania jest tak proste, jak można się spodziewać.

Otrzymasz także okno cli na wypadek, gdybyś chciał zrobić coś niejasnego.

Jedną z cech DDD, która wyróżnia się spośród wszystkich innych debuggerów, których użyłem, jest „wykresy” danych. Pozwala to wyświetlać i rozmieszczać struktury, obiekty i pamięć jako przeciągalne pola. Dwukrotne kliknięcie wskaźnika otworzy dereferencyjne dane z wizualnymi linkami z powrotem do rodzica.

Andrew Edgecombe
źródło
Czy ddd działa na programach z argumentami? Nie mogłem zmusić go do przekazania argumentów ...
user3236841,
Jeśli dobrze pamiętam, DDD może przekazać ci okno konsoli bezpośrednio do GDB. W konsoli GDB można ustawić argumenty wiersza poleceń za pomocą polecenia „set args xyz abc”.
Andrew Edgecombe,
5

Qt Creator-on-Linux z pewnością jest obecnie na równi z Visual Studio-on-Windows dla C ++. Powiedziałbym nawet lepiej po stronie debuggera.

Marv
źródło
5

Na tej liście brakuje jednego IDE, który jest bardzo wydajny (korzystałem z niego w wielu projektach C / C ++ bez żadnych problemów): Netbeans .

Florent
źródło
Wolę cgdb teraz, kiedy się do tego przyzwyczaiłem, ale Netbeans był tak świetnym odskocznią od VS.
zzxyz
3

To, co można przejść, będzie w dużym stopniu ograniczone przez informacje debugowania generowane przez g ++. Emacs zapewnia interfejs do gdb, który pozwala kontrolować go za pomocą pasków narzędzi / menu i wyświetlać dane w osobnych oknach, a także bezpośrednio wpisywać polecenia gdb. CDT Eclipse zapewnia podobne narzędzia. Słyszałem o Anjucie i Code :: Blocks, ale nigdy ich nie użyłem.

Allen
źródło
3

Jako ktoś zaznajomiony z Visual Studio, widziałem kilka IDE o otwartym kodzie źródłowym, aby go zastąpić, a KDevelop jest najbliższym IMO do bycia czymś, co osoba Visual C ++ może po prostu usiąść i zacząć używać. Kiedy uruchamiasz projekt w trybie debugowania, używa gdb, ale kdevelop praktycznie obsługuje całą sprawę, więc nie musisz wiedzieć, że to gdb; jesteś tylko krokiem lub przypisujesz zegarki do zmiennych.

Niestety, nadal nie jest tak dobry jak Debugger Visual Studio.


źródło
3

Nie wspominasz, czy używasz systemu Windows, czy UNIX.

W systemach UNIX KDevelop jest dobry, ale korzystam z KDbg, ponieważ jest łatwy w użyciu i działa również z aplikacjami, które nie zostały opracowane w KDevelop.

Zaćmienie jest dobre na obu platformach.

W systemie Windows istnieje świetny pakiet o nazwie Wascana Desktop Developer, który jest Eclipse CDT i MinGW, wszystkie spakowane i ładnie wstępnie skonfigurowane pod kątem minimalnego bólu. To najlepsza rzecz, jaką znalazłem do tworzenia kodu GNU w systemie Windows.

Użyłem wszystkich tych debuggerów i żaden z nich nie jest tak dobry jak MS Dev Studio. Eclipse / Wascana jest prawdopodobnie najbliższy, ale ma ograniczenia, takie jak nie można wejść do bibliotek DLL i nie sprawdza się tak dobrze przy badaniu zmiennych.

Adam Pierce
źródło
3

Czy kiedykolwiek spojrzałeś na debugger DS-5 ?

Istnieje wersja płatna, która zawiera wiele przydatnych funkcji, ale możesz także używać wersji Community Edition za darmo (co jest również bardzo przydatne, szczególnie w przypadku systemów osadzonych).

Mam pozytywne doświadczenia z tym narzędziem podczas debugowania aplikacji na Androida na prawdziwym urządzeniu za pomocą Eclipse.

Viktor Malyi
źródło
2

Kod: Bloki C ++ IDE ma graficzny opakowania, z kilkoma z cech chcesz, ale nic podobnego mocy VS.

Crobar
źródło
2

VisualGDB to kolejna wtyczka Visual Studio do tworzenia i debugowania aplikacji na platformach Linux i Embedded.

Siergiej Żukow
źródło
1

KDevelop działa całkiem dobrze.

Harold Ekstrom
źródło
1

Czy próbowałeś gdb -w z cygwin gdb. Zakłada się, że ma interfejs systemu Windows, który działa dość dobrze.

Jedyny problem, jaki znalazłem, to to, że na moim obecnym komputerze nie działało w ten sposób, dopóki nie zainstalowałem ddd. Podejrzewam, że wymaga tcltk, który został zainstalowany podczas instalacji ddd.

BubbaT
źródło
0

Najnowsza wersja Geany obsługuje to (tylko w systemie Linux)

Milan Babuškov
źródło
0

Jeśli szukasz gdb w Visual Studio, sprawdź WinGDB .

Dominic.wig
źródło
0

W ciągu ostatnich 15 miesięcy korzystam z wglądu (dostarczonego z FC6). To nie jest świetne, jest napisane w Tcl / Tk, ale jest proste i przydatne. DDD ma podobną jakość / użyteczność, ale jest nieco trudniejszy w użyciu (różne poprawki i pominięcia GUI). Próbowałem także zintegrować gdb z moim IDE, SlickEdit. Działało OK (grałem z nim około 4 godzin), ale nie podobały mi się przełączniki kontekstu GUI. Lubię, aby moje IDE pozostało niezmienione podczas debugowania; w systemie Windows używam SlickEdit dla IDE i Visual Studio Debugger do debugowania. Tak więc z 3: Insight, DDD i SlickEdit, Insight jest moim pierwszym wyborem, używam go> 95% czasu, a wiersze poleceń gdb i DDD stanowią pozostałe 5%. Jeśli zdobędę szansę, w pewnym momencie dokonam ewaluacji Eclipse, mój komputer nie wydaje się mieć wystarczającej ilości pamięci RAM (tylko 1 GB), aby uruchomić Eclipse w miarę dobrze.

Słyszałem też wiele pochwał dla TotalView, w tym pierwszej ręki podczas rozmowy o pracę. Dostałem ewaluację dla naszej firmy pod koniec 2008 roku, ale ostatecznie nie kontynuowaliśmy, ponieważ gdb było wystarczająco dobre dla naszych potrzeb; i jest darmowy i wszechobecny.

Radim Cernej
źródło
0

Użyj www.zero-bugs.com/ Zero debugger, wymaga obsługi C ++ 0x z gcc

siddhusingh
źródło
1
Witryna
www.zero-bugs.com/ nie działa
0

Szukałem debugera, aby przejść przez uruchomiony program. Powiedz: Dołącz. Program został zbudowany z zaćmieniem, ale może z powodu pewnych wielowątkowych przeszkód, żadnych plików źródłowych. Cokolwiek.

Z NetBeans bardzo mi się podobało.

  • [debuguj] z menu -> Dołącz Deugger ...
  • jako proces wybrał ten do debugowania
  • jako projekt [nowy projekt]

Teraz okno znika i nic nie widać. oderwać się od procesu. Pomaga „Kwadrat” odczytu.

  • zaimportuj źródło z projektu jako np. folder. „... / MyProject / src
  • Teraz pojawia się w twoim projekcie i możesz ustawić punkty przerwania.
  • ponownie uruchom debuger
  • wybrał proces do debugowania.
  • debuger powinien zatrzymać się, jeśli program osiągnie następny punkt przerwania.

Przechodzenie do [okno] -> [Debugowanie] -> Czy twoje okno będzie wygodne.

Cutton Eye
źródło