2012-03-14 12 views
39

Qual è la differenza tra i debugger GDB & LLDB? Ho recentemente aggiornato la mia versione Xcode dalla 4.2 alla 4.3 & ha iniziato a ricevere avvisi per l'aggiornamento del mio debugger da GDB a LLDB.GDB Vs Debugger LLDB

+0

Una delle principali differenze che mi sta trattenendo dal cambiare è che GDB è molto abile nella stampa di array di grandi dimensioni con un sacco di contenuti ripetitivi, mentre LLDB spazza via la barra di scorrimento verticale. –

+1

Quello che mi piace di LLDB è che la sua sintassi è più strutturata. GDB è un po 'più libero. –

risposta

39

LLDB fa parte della suite di strumenti LLVM a cui Apple sta passando, incluso Clang. Ci sono tonnellate di funzionalità migliorate, tra cui prestazioni migliorate. C'è una rapida introduzione per gli utenti di GDB qui: http://lldb.llvm.org/tutorial.html

Tuttavia ...

Si potrebbe desiderare di fare un viaggio verso il forum a developer.apple.com. Al momento c'è un bel po 'di brontolio sui problemi con LLDB (in XCode 4.3.1). Un problema sgradevole, che la gente di Apple ha confermato, è che la visualizzazione di ivars durante lo stepping potrebbe mostrarti valori errati.

+8

Questo errore è il motivo per cui mi ritroverò a utilizzare GDB per il momento :) –

+0

Grazie per aver menzionato questo problema! Stavo diventando pazzo di ciò che mi ha mostrato il debugger LLDB. Era abbastanza impossibile. GDB funziona meglio, anzi. –

+0

Ciao. È passato un anno. LLDB non è ancora così bello? – Voldemort

9

1. per differenza della Definizione

In primo luogo, cosa è GDB?

"GDB è il debugger standard per il sistema software GNU"
GNU Debugger, di solito chiamato semplicemente GDB e nominato gdb come file eseguibile, è il debugger standard per il sistema operativo GNU. Tuttavia, il suo uso non è strettamente limitato al sistema operativo GNU; è un debugger portatile che gira su molti sistemi simili a Unix e funziona per molti linguaggi di programmazione, inclusi Ada, C, C++, Objective-C, Free Pascal, Fortran, Java 1 e parzialmente altri. 2

(citazione da wikipedia)

In secondo luogo, cosa è LLDB?

"LLDB è un debugger costruito come un insieme di componenti riutilizzabili che altamente leva esistente biblioteche della LLVM progetto più ampio, come ad esempio il parser espressione Clang e LLVM disassembler.
LLDB è Apple‘da zero sostituzione’ per GDB, sviluppato in stretto coordinamento con i compilatori LLVM per offrirti il ​​debug avanzato con funzionalità complete nel controllo del flusso e nell'ispezione dei dati. A partire da Xcode 5, tutti i nuovi progetti di sviluppo preesistenti vengono automaticamente riconfigurati per l'utilizzo di LLDB. L'installazione standard di LLDB offre una vasta gamma di comandi progettati per essere compatibili con i comuni comandi GDB.Oltre all'uso della configurazione standard, è possibile personalizzare facilmente LLDB in base alle proprie esigenze

/* Ho cercato di trovare i dati reali/pratici per dimostrare la dichiarazione: LLDB è già molto più veloce di GDB durante il debug di programmi di grandi dimensioni.) Tuttavia, non riuscivo a trovarlo. se c'è qualcuno che ha questi dati correlati, per favore modifica questo articolo. */

Sia GDB che LLDB sono ovviamente debugger eccellenti senza dubbio.
GDB è parte del debugger del progetto GNU creato per funzionare con il compilatore GNU.
LLDB è parte del debugger del progetto LLVM creato per funzionare con il compilatore LLVM.

2.Per differenza del debugger Utilizzo del comando

La maggior parte dei comandi è la stessa.
Tuttavia, lldb e gdb, due diversi debugger sono sviluppati da diversi gruppi di sviluppatori e quindi hanno comandi leggermente diversi.

Questo è un buon collegamento per confrontare la differenza di questi due comandi del debugger.
lasciatemi collego dettaglio qui di seguito: https://developer.apple.com/library/content/documentation/IDEs/Conceptual/gdb_to_lldb_transition_guide/document/lldb-command-examples.html

http://lldb.llvm.org/lldb-gdb.html

Questo indica chiaramente ed organizza la differenza di comandi.

Nel caso in cui il sito non sia più accessibile, riassumo la principale differenza di comandi di seguito dal sito collegato.

Execution command difference between GDB and LLDB Break-Point command difference between GDB and LLDB Examining variable command difference between GDB and LLDB Examining thread state command difference between GDB and LLDB

3. Con parere personale

LLDB è stato completamente integrato da Xcode IDE 5 per impostazione predefinita come debugger primaria.
Da quel momento, c'è stato qualche rapporto sui reclami sulla stabilità LLDB, problemi di prestazioni e bug.
Tuttavia, LLVM con il progetto LLDB è stato incredibilmente migliorato e aggiornato per quanto riguarda uno dei principali progetti open source al mondo.
Quindi, penso che, almeno, LLDB dovrebbe essere utilizzato per l'ambiente di sviluppo Apple dal momento che LLDB ha rubato la posizione di GDB ed è già il debugger predefinito primario almeno nel mondo Apple.
(A fine settembre 2016, Xcode 8 che integra LLVM e LLDB è stato rilasciato ufficialmente, il che significa che è trascorso molto tempo poiché LLVM/LLDB è la catena di strumenti predefinita per Xcode.)
Ma, sappiamo tutti già che GDB ha è stato storicamente e fortemente verificato e debugger provato in battaglia per oltre 30 anni, il che è fantastico.

Quindi, direi ...
Vorrei utilizzare lldb durante l'utilizzo di clang, l'uso gdb mentre usando il compilatore gcc come buona combinazione o pari perché lldb si basa su LLVM, mentre gdb è un debugger GNU.

Vorrei che potesse esserti utile.

Grazie.

Problemi correlati