Esiste una GUI gdb C ++ per Linux? [chiuso]


210

In breve: qualcuno conosce una GUI per gdb che la porta alla pari o vicina al set di funzionalità che si ottiene nella versione più recente di Visual C ++?

In dettaglio: come qualcuno che ha trascorso molto tempo a programmare in Windows, uno dei più grandi ostacoli che ho trovato ogni volta che devo codificare C ++ in Linux è che il debug di qualsiasi cosa usando la riga di comando gdb mi richiede molte volte più di quanto non faccia in Visual Studio e non sembra migliorare con la pratica. Alcune cose sono semplicemente più facili o veloci da esprimere graficamente.

In particolare, sto cercando una GUI che:

  • Gestisce tutte le nozioni di base come passare da un codice all'altro, osservare variabili e punti di interruzione
  • Comprende e può visualizzare il contenuto di tipi di dati C ++ complessi e nidificati
  • Non viene confuso da e, preferibilmente, può passare in modo intelligente attraverso strutture di dati e codice basate su modelli durante la visualizzazione di informazioni rilevanti come i tipi di parametro
  • Può gestire le applicazioni thread e passare da un thread all'altro per scorrere o visualizzare lo stato di
  • È in grado di gestire il collegamento a un processo già avviato o la lettura di un dump principale, oltre all'avvio del programma in gdb

Se un tale programma non esiste, mi piacerebbe conoscere le esperienze che le persone hanno avuto con programmi che soddisfano almeno alcuni dei punti elenco. Qualcuno ha qualche consiglio?

Modifica:
elencare le possibilità è grandioso e prenderò quello che posso ottenere, ma sarebbe ancora più utile se tu potessi includere nelle tue risposte:
(a) Se hai effettivamente utilizzato questa GUI o meno , quale feedback positivo / negativo hai a riguardo.
(b) Se sai, quali delle funzioni sopra menzionate sono / non sono supportate

Le liste sono facili da trovare, siti come questo sono fantastici perché puoi avere un'idea delle esperienze personali delle persone con le applicazioni.


21
+1 per "Siti come questo sono fantastici perché puoi avere un'idea delle esperienze personali delle persone". Troppe persone al giorno d'oggi fanno solo un dump dell'elenco che IMHO manca completamente.
kizzx2,



Vedi questo elenco di front-end gdb qui: sourceware.org/gdb/wiki/GDB%20Front%20Ends e dai uno sguardo al primo nell'elenco. Sembra molto promettente e moderno ed è multipiattaforma poiché è basato su browser: gdbgui.com .
Gabriel Staples il

Risposte:


55

Non troverai nulla che si sovrapponga a GDB in grado di competere con la potenza pura del debugger di Visual Studio. È semplicemente troppo potente ed è troppo ben integrato nell'IDE.

Per un'alternativa Linux, prova DDD se il software libero fa per te.


2
WinDBG è di gran lunga superiore a quello che offre Visual Studio. Il debugger di Visual Studio si trova sulla stessa architettura di WinDBG. Detto questo, GDB non ha nulla da chiedere se confrontato con Windbg. Un debugger grafico migliore di DDD sarebbe fantastico. Eclipse CDT è una buona alternativa. Penso che ci sia stata un'interfaccia utente di KDE
bigmonachus

114
Oh guarda. Una risposta che fa una richiesta senza eseguirne il backup. Trovo anche strano che la risposta che non risponde alla domanda sia stata accettata.
alternativa il

3
per chiunque venga qui alla ricerca di una vera risposta, sappi che ddd è spazzatura. La migliore GUI per debugger per Linux che ho trovato è IDA, che non è software libero.
bkconrad,

1
Rispondi alla domanda nel miglior modo possibile o non dire nulla. Avendo usato entrambi, Visual Studio è più ricco di funzionalità, ma DDD è abbastanza buono da non perdere VS. Purtroppo, DDD sta mostrando la sua età.
Alan De Smet,

6
Questo post deve essere aggiornato / migliorato. Qt Creator è fantastico, alla pari con Visual Studio.
Vharron,

85

Eclipse CDT fornirà un'esperienza paragonabile all'utilizzo di Visual Studio. Uso Eclipse CDT quotidianamente per scrivere codice e debug di processi locali e remoti.

Se non hai familiarità con l'utilizzo di un IDE basato su Eclipse, la GUI impiegherà un po 'ad abituarsi. Tuttavia, una volta comprese le idee della GUI che sono uniche per Eclipse (ad esempio una prospettiva), l'utilizzo dello strumento diventa una bella esperienza.

Gli strumenti CDT forniscono un indicizzatore C / C ++ decente che consente di trovare rapidamente riferimenti a metodi nella propria base di codice. Fornisce inoltre un utile strumento di espansione macro e supporto limitato per il refactoring.

Per quanto riguarda il supporto per il debug, CDT è in grado di fare tutto ciò che è presente nella tua lista, ad eccezione della lettura di un core dump (può supportare questo, ma non ho mai provato a usare questa funzione). Inoltre, la mia esperienza con il codice di debug tramite modelli è limitata, quindi non sono sicuro del tipo di esperienza che CDT fornirà a questo proposito.

Per ulteriori informazioni sul debug utilizzando Eclipse CDT, è possibile consultare queste guide:


10
La lettura di core dump è supportata. (Viene chiamato Postmortem Debugger.)
Josh Kelley,

Ho avuto un'esperienza migliore nel debug di Eclipse CDT che in Visual Studios. Tuttavia, non ho dato a MSVC troppe possibilità.
notlesh

3
Penso che QtCreator debba essere menzionato insieme a Eclipse in quanto è comparabile.
nonsensickle

78

gdb -tui funziona bene se vuoi qualcosa di interfaccia grafica, ma ancora basato sui caratteri.


45
Puoi anche andare in modalità TUI (text user interface) mentre sei in gdb usando il comando '-'. Il ritorno al prompt dei comandi è Ctrl-X Ctrl-A. Mentre ci si trova in modalità TUI, su, giù, sinistra e destra si spostano attraverso la sorgente. Usa Ctrl-P, Ctrl-N, Ctrl-F e Ctrl-B per navigare nella cronologia della riga di comando.
Ben Combee,

Questo e 'esattamente quello che stavo cercando. La potenza della riga di comando di gdb con alcune viste utili che si aggiornano mentre mi muovo.
Kevin Cox,

7
Un .gdbinit su steriods ti dà una GUI basata sul personaggio davvero impressionante, con colore: github.com/cyrus-and/gdb-dashboard
cs01

mi piace abbastanza gdb-dashboard ma devo anche menzionare voltron .
nonsensickle

3
@Barry grazie. Per chiunque sia curioso, ecco un link: github.com/cs01/gdbgui . Ha una struttura dati simile a DDD, un'architettura client / server per il debug di macchine remote senza inoltro X necessario e capacità di esplorare variabili complesse, ecc.
cs01

47

Dai un'occhiata al debugger C / C ++ di Nemiver . È facile da installare in Ubuntu (Strumenti per sviluppatori / Debug).

Aggiornamento: nuovo collegamento.


Assolutamente favoloso , supportato anche con apt: 'apt-get install nemiver'. Il mio unico cavillo è la compilazione dal repo non riuscita a causa di un 'Nessun pacchetto trovato gconf-2.0'.
J Evans,

l'interfaccia è abbastanza chiara e buona da leggere, ma a volte si arresta in modo anomalo durante l'utilizzo delle funzionalità dell'interfaccia v0.9.6. Accetta anche i parametri dell'applicazione di cui è stato eseguito il debug, cosa che ancora non posso lasciare fare a ddd.
Aquarius Power l'

Disponibile anche su Fedora 30 (almeno). Ho appena parlato di questa domanda e nemiver.
user3236841

31

Qt Creator sembra roba buona. Un collega mi ha mostrato un modo per impostarlo per il debug:

  • Creare un nuovo progetto, "Importazione di progetti basati su Makefile".
  • Puntalo sulla cartella del tuo progetto radice (indicizzerà le fonti al suo interno ed è incredibilmente veloce).
  • Vai alle impostazioni del progetto e aggiungi una configurazione di esecuzione, quindi specifica l'eseguibile di cui vuoi eseguire il debug e i relativi argomenti.
  • Qt Creator sembra insistere sulla costruzione del progetto prima di eseguire il debug. Se non lo desideri o non usi make, vai ai progetti -> build (riquadro di sinistra), quindi, nel riquadro di destra in "Passaggi di costruzione", rimuovi tutti i passaggi, incluso quello di default quando hai creato il progetto.

Potrebbe sembrare un po 'troppo lavoro per il debug di un'app che avevo già compilato, ma ne vale la pena. Il debugger mostra thread, stack e variabili locali in modo simile a Visual Studio e utilizza anche molte delle stesse scorciatoie da tastiera. Sembra gestire bene i template, almeno std :: string e std :: map. Il collegamento a processi esistenti e core dump sembra essere supportato, anche se non l'ho ancora testato.

Tieni presente che l'ho usato per meno di un'ora ora, ma sono rimasto impressionato finora.


29

Detesto l'idea dello sviluppo di Windows, ma il debugger VC ++ è tra i migliori che abbia mai visto. Non ho trovato un front-end GUI che si avvicini a quello VC.

GDB è fantastico quando ci si abitua davvero. Usalo abbastanza con rabbia e diventerai molto abile. Posso sfrecciare attorno a un programma facendo tutte le cose che hai elencato senza molto sforzo. Ci sono voluti circa un mese per soffrire di un collegamento SSH a un server remoto prima che fossi abile. Non ci tornerò mai più però.

DDD è davvero potente ma era piuttosto difettoso. Ho scoperto che si bloccava abbastanza spesso quando riceveva messaggi da GDB che non si muovevano. È buono perché ha una finestra di interfaccia gdb in modo da poter vedere cosa sta succedendo e anche interagire direttamente con gdb. DDD non può essere utilizzato su una sessione X remota nel mio ambiente (un vero problema, dal momento che sono seduto su un thin client quando eseguo lo sviluppo Unix) per qualche motivo, quindi è fuori per me.

KDevelop ha seguito il tipico stile di KDE ed ha esposto TUTTO all'utente. Inoltre, non ho mai avuto fortuna nel debug di programmi non KDevelop in KDevelop.

Gnat Programming Studio (GPS) è in realtà un buon front-end per GDB. Non gestisce solo i progetti Ada, quindi vale la pena provarlo se hai bisogno di un debugger.

Potresti usare Eclipse, ma è piuttosto pesante e molte persone Unix esperte con cui ho lavorato (me incluso) non si preoccupano molto della sua interfaccia, che non sarà solo STFU e ti toglierà di mezzo. Anche Eclipse sembra occupare molto spazio e correre come un cane.


2
Volevo solo collegare il mio progetto, gdbgui ( github.com/cs01/gdbgui ). È un'architettura client / server, quindi funziona bene eseguendo il debug di macchine remote senza una sessione X richiesta. Ha anche un terminale per interagire direttamente con GDB e ha elementi visivi per visualizzare strutture di dati, simili a DDD.
CS01,

Confronti con pro e contro basati sull'esperienza. Proprio quello di cui ha bisogno questa domanda. ty
Heath Raftery,


16

Uso DDD molto ed è abbastanza potente una volta che impari a usarlo. Una cosa che direi è non usarlo su X tramite WAN perché sembra fare molti aggiornamenti dello schermo non necessari.

Inoltre, se non sei accoppiato con GDB e non ti dispiace fare un po 'di soldi, allora proverei TotalView. Ha un po 'di una curva di apprendimento ripida (potrebbe essere sicuramente più intuitiva), ma è il miglior debugger C ++ che abbia mai usato su qualsiasi piattaforma e può essere esteso per introspettare i tuoi oggetti in modi personalizzati (permettendoti così di visualizzare un Elenco STL come un effettivo elenco di oggetti e non un gruppo di membri di dati interni confusi, ecc.)


Non riesco affatto a far funzionare DDD su X remoto; semplicemente si blocca con errori Xlib sul mio thin client :(
Adam Hawes

totalview sembra un'alternativa praticabile. Non considero DDD migliore dell'interfaccia maledizioni di gdb.
deft_code

8

Dai un'occhiata al progetto Eclipse CDT. È un plugin per Eclipse orientato allo sviluppo C / C ++ e include una prospettiva di debug abbastanza ricca di funzionalità (che dietro le quinte usa GDB). È disponibile su un'ampia varietà di piattaforme.




6

Ho usato KDbg (funziona solo con KDE).


3
KDbg non è limitato a KDE.
nobar,

Che è impressionante . Mi chiedo dove sia stato tutto questo tempo.
edmz,

5

Ho provato un paio di guis diversi per gdb e ho trovato DDD il migliore. E mentre non posso commentare altre offerte non gdb per Linux, ho usato un certo numero di altri debugger su altre piattaforme.

gdb fa la maggior parte delle cose che hai nella tua lista dei desideri. DDD ha un aspetto migliore su di loro. Ad esempio, la commutazione del thread è semplificata. L'impostazione dei punti di interruzione è semplice come ci si aspetterebbe.

Hai anche una finestra cli nel caso ci sia qualcosa di oscuro che vuoi fare.

L'unica caratteristica di DDD che si distingue da qualsiasi altro debugger che ho usato è la "rappresentazione grafica" dei dati. Ciò consente di visualizzare e disporre strutture, oggetti e memoria come scatole trascinabili. Facendo doppio clic su un puntatore si apriranno i dati con riferimento con collegamenti visivi al genitore.


Ddd funziona su programmi con argomenti? Non sono riuscito a far passare gli argomenti ...
user3236841

Se ricordo bene, DDD può darti una finestra della console direttamente su GDB. Nella console GDB è possibile impostare gli argomenti della riga di comando utilizzando il comando "set args xyz abc".
Andrew Edgecombe,

5

Oggigiorno Qt Creator-on-Linux è certamente alla pari con Visual Studio-on-Windows per C ++. Direi anche meglio dal punto di vista del debugger.


5

C'è un IDE che manca in questo elenco e che è molto efficiente (l'ho usato in molti progetti C / C ++ senza problemi): Netbeans .


Preferisco di gran lunga cgdb ora che mi sono abituato, ma Netbeans è stato un grande trampolino di lancio da VS.
zzxyz,

3

Ciò che può essere superato sarà limitato dalle informazioni di debug che g ++ produce, in larga misura. Emacs fornisce un'interfaccia a gdb che ti consente di controllarlo tramite le barre degli strumenti / i menu e di visualizzare i dati in finestre separate, oltre a digitare direttamente i comandi gdb. Il CDT di Eclipse fornisce strumenti simili. Ho sentito parlare di Anjuta e Code :: Blocks ma non li ho mai usati.


3

Come qualcuno che ha familiarità con Visual Studio, ho esaminato diversi IDE open source per sostituirlo, e KDevelop arriva l'IMO più vicino ad essere qualcosa che una persona di Visual C ++ può semplicemente sedersi e iniziare a utilizzare. Quando esegui il progetto in modalità debug, usa gdb ma kdevelop gestisce praticamente tutto in modo da non dover sapere che è gdb; stai solo facendo un singolo passo o assegnando orologi alle variabili.

Sfortunatamente non è ancora buono come il debugger di Visual Studio.


3

Non devi dire se stai usando Windows o UNIX.

Sui sistemi UNIX, KDevelop è buono ma io uso KDbg perché è facile da usare e funziona anche con app non sviluppate in KDevelop.

Eclisse è buono su entrambe le piattaforme.

Su Windows, esiste un ottimo pacchetto chiamato Wascana Desktop Developer che è Eclipse CDT e MinGW, tutti impacchettati e preconfigurati per il minimo del dolore. È la cosa migliore che ho trovato per lo sviluppo di codice GNU su Windows.

Ho usato tutti questi debugger e nessuno di questi è buono come MS Dev Studio. Eclipse / Wascana è probabilmente il più vicino ma ha delle limitazioni come non è possibile entrare nelle DLL e non fa altrettanto bene nell'esame delle variabili.


3

Hai mai dato un'occhiata al debugger DS-5 ?

Esiste una versione a pagamento che include molte utili funzioni, ma è anche possibile utilizzare Community Edition gratuitamente (che è anche abbastanza utile soprattutto per i sistemi embedded).

Ho un'esperienza positiva con questo strumento quando eseguo il debug di applicazioni Android su un dispositivo reale utilizzando eclipse.


2

Il Code: Blocks C ++ IDE ha un wrapper grafico, con alcune delle funzionalità che desideri, ma niente come la potenza di VS.


2

VisualGDB è un altro plug-in di Visual Studio per lo sviluppo e il debug di applicazioni su piattaforme Linux e embedded.



1

Hai provato gdb -w con cygwin gdb. Si suppone che abbia un'interfaccia di Windows che funziona abbastanza bene.

L'unico problema che ho riscontrato è che sul mio computer attuale non ha funzionato in questo modo fino a quando non ho installato ddd. Ho il sospetto che richiede tcltk che è stato installato quando ho installato ddd.




0

Negli ultimi 15 mesi utilizzo insight (fornito con FC6). Non è eccezionale, è scritto in Tcl / Tk, ma è semplice e utile. DDD è di qualità / utilità simile, ma un po 'più difficile da usare (vari aspetti e omissioni della GUI). Ho anche provato a integrare gdb con il mio IDE, SlickEdit. Funzionava bene (ci ho giocato circa 4 ore), ma non mi sono piaciuti i cambi di contesto della GUI. Mi piace che il mio IDE rimanga invariato durante il debug; su Windows utilizzo SlickEdit per IDE e Visual Studio Debugger per il debug. Quindi dal 3: Insight, DDD e SlickEdit, Insight è la mia prima scelta, la uso> 95% delle volte, la riga di comando gdb e DDD rappresentano l'altro 5%. Se ne avrò la possibilità, valuterò Eclipse ad un certo punto, il mio PC di lavoro non sembra avere abbastanza RAM (solo 1 GB) per eseguire Eclipse abbastanza bene.

Ho anche ricevuto molti elogi per TotalView, inclusa la prima mano durante un colloquio di lavoro. Ho ottenuto una valutazione per la nostra azienda alla fine del 2008, ma alla fine non abbiamo proceduto poiché gdb era abbastanza buono per le nostre esigenze; ed è gratuito e onnipresente.


0

Usa www.zero-bugs.com/ Zero debugger, richiede il supporto C ++ 0x da gcc


1
Il sito Web www.zero-bugs.com/ è inattivo
vharron,

0

Stavo cercando un debugger per passare da un programma in esecuzione. Dì: Allega. Il programma è stato creato con eclissi, ma a causa forse di alcuni ostacoli multithreadding, nessun file sorgente a cui piaceva. Qualunque cosa.

Mi sono sentito molto a mio agio con NetBeans.

  • [debug] dal menu -> Allega Deugger ...
  • come processo ha scelto quello per il debug
  • come progetto [nuovo progetto]

Ora la finestra scompare e non vedi nulla. staccare dal processo. Lo "Stop" di Read Square aiuta.

  • importa sorgente dal progetto come ad es. cartella. " ... / MyProject / src
  • Ora viene visualizzato nel progetto e puoi impostare i punti di interruzione.
  • ancora per collegare il debugger
  • ha scelto il processo per eseguire il debug.
  • il debugger dovrebbe arrestarsi se il programma raggiunge il punto di interruzione successivo.

Andare su [finestra] -> [Debug] -> La tua finestra ti metterà comodo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.