Amarengo

Articles and news

debugger GDB vs LLDB

1. Per differenza di definizione

Innanzitutto, cos’è GDB?

“GDB è il debugger standard per il sistema software GNU”
Il debugger GNU, solitamente chiamato solo GDB e chiamato gdb come file eseguibile, è il debugger standard per il sistema operativo GNU. Tuttavia, il suo utilizzo non è strettamente limitato al sistema operativo GNU; si tratta di un debugger portatile che gira su molti sistemi Unix-like e funziona per molti linguaggi di programmazione, tra cui Ada, C, C++, Objective-C, Free Pascal, Fortran, Java1 e parzialmente altri.2
(citazione da wikipedia)

In secondo luogo, che cosa è LLDB?

“LLDB è un debugger costruito come un insieme di componenti riutilizzabili che sfruttano fortemente le librerie esistenti nel progetto LLVM più grande, come il parser di espressioni Clang e il disassemblatore LLVM.
LLDB è il sostituto “da zero” di Apple per GDB, sviluppato in stretto coordinamento con i compilatori LLVM per offrire il debug all’avanguardia con ampie funzionalità nel controllo del flusso e nell’ispezione dei dati. A partire da Xcode 5, tutti i progetti di sviluppo nuovi e preesistenti vengono automaticamente riconfigurati per utilizzare LLDB. L’installazione standard LLDB fornisce una vasta serie di comandi progettati per essere compatibili con i comandi GDB familiari. Oltre a utilizzare la configurazione standard, è possibile personalizzare facilmente LLDB in base alle proprie esigenze.
(citazione dal sito ufficiale di Apple)
/* Ho cercato di trovare dati reali / pratici per dimostrare l’affermazione : LLDB è già molto più veloce di GDB durante il debug di programmi di grandi dimensioni.) Tuttavia, non sono riuscito a trovarlo. se c’è qualcuno che ha questi dati correlati, si prega di modificare questo articolo. */

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

2. Per differenza di utilizzo del comando Debugger

La maggior parte dei comandi sono gli stessi.
Tuttavia, lldb e gdb, due debugger diversi sono sviluppati da diversi gruppi di sviluppatori e quindi hanno comandi un po ‘ diversi.

Questo è un buon link qui sotto per confrontare la differenza di questi due comandi debugger.
mi permetta di collegare il dettaglio qui sotto : 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 e 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.

Differenza di comando di esecuzione tra GDB e LLDBDifferenza di comando break-Point tra GDB e LLDBEsaminare la differenza di comando variabile tra GDB e LLDBEsaminare la differenza di comando di stato del thread tra GDB e LLDB
3. Per opinione personale
LLDB è stato completamente integrato da Xcode IDE 5 per impostazione predefinita come debugger primario.
Da quel momento, ci sono stati alcuni reclami sulla stabilità LLDB, problemi di prestazioni e bug.
Tuttavia, LLVM con il progetto LLDB è stato incredibilmente migliorato e aggiornato fino a quello del progetto open source principale al mondo.
Quindi, penso, almeno, che LLDB dovrebbe essere usato per l’ambiente di sviluppo Apple poiché LLDB ha rubato la posizione di GDB ed è già il debugger predefinito primario almeno nel mondo Apple.
(A fine settembre 2016, Xcode 8 integrando LLVM e LLDB è stato ufficialmente rilasciato, il che significa che è passato molto tempo da quando LLVM/LLDB è la catena di strumenti predefinita per Xcode.)
Ma, sappiamo tutti che GDB è stato storicamente e fortemente verificato e collaudato debugger da oltre 30 anni, il che è fantastico.

Quindi, direiVorrei usare lldb mentre uso clang, usare gdb mentre uso il compilatore gcc come buona combinazione o coppia perché lldb è basato su llvm, mentre gdb è un debugger GNU.

Vorrei che potesse essere utile per voi.

Grazie.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.