Amarengo

Articles and news

GDB vs depanatoare LLDB

1. Prin diferența de definiție

în primul rând, ce este GDB?

„GDB este depanatorul standard pentru sistemul software GNU”
depanatorul GNU, numit de obicei doar GDB și numit gdb ca fișier executabil, este depanatorul standard pentru sistemul de operare GNU. Cu toate acestea, utilizarea sa nu se limitează strict la sistemul de operare GNU; este un depanator portabil care rulează pe multe sisteme asemănătoare Unix și funcționează pentru multe limbaje de programare, inclusiv Ada, C, C++, Objective-C, Free Pascal, Fortran, Java1 și parțial altele.2
(citat din wikipedia)

în al doilea rând, ce este LLDB?

„LLDB este un depanator construit ca un set de componente reutilizabile care valorifică foarte mult bibliotecile existente în proiectul LLVM mai mare, cum ar fi parserul expression clang și DEZASAMBLATORUL LLVM.
LLDB este înlocuitorul Apple „de la zero” pentru GDB, dezvoltat în strânsă coordonare cu compilatoarele LLVM pentru a vă oferi depanare de ultimă generație, cu capacități extinse în controlul fluxului și inspecția datelor. Începând cu Xcode 5, toate proiectele de dezvoltare noi și preexistente sunt reconfigurate automat pentru a utiliza LLDB. Instalarea standard LLDB vă oferă un set extins de comenzi concepute pentru a fi compatibile cu comenzile GDB familiare. În plus față de utilizarea configurației standard, puteți personaliza cu ușurință LLDB pentru a se potrivi nevoilor dumneavoastră.
(Citat de pe site-ul oficial Apple)
/* am încercat să găsesc date reale / practice pentru a dovedi afirmația : LLDB este deja mult mai rapid decât GDB atunci când depanați programe mari.) Cu toate acestea, nu am putut găsi. dacă există cineva care are aceste date conexe, vă rugăm să editați acest articol. */

atât GDB, cât și LLDB sunt, desigur, depanatori excelenți, fără îndoială.
GDB este depanator parte a Proiectului GNU creat pentru a lucra de-a lungul compilatorului GNU.
LLDB este depanator parte a proiectului LLVM creat pentru a lucra de-a lungul LLVM compilator.

2. Prin diferența de utilizare a Comenzii Debugger

majoritatea comenzilor sunt aceleași.
cu toate acestea, lldb și gdb, două depanatoare diferite sunt dezvoltate de un set diferit de dezvoltatori și, astfel, au comenzi puțin diferite.

acesta este un link bun de mai jos pentru compararea diferenței dintre aceste două comenzi de depanare.
permiteți-mi să leg detaliile de mai jos : 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

acest lucru indică în mod clar și organizează diferența de comenzi.

în cazul în care site-ul nu mai este accesibil, am rezumat diferența majoră de comenzi de mai jos de la site-ul legat.

diferența de comandă de execuție între GDB și LLDBdiferența de comandă a punctului de întrerupere între GDB și LLDBexaminarea diferenței de comandă variabilă între GDB și LLDBexaminarea diferenței de comandă a stării firului între GDB și LLDB
3. Prin opinia personală
LLDB a fost complet integrat de la Xcode IDE 5 în mod implicit ca debugger primar.
din acel moment, a existat un raport de plângere cu privire la stabilitatea LLDB, probleme de performanță și bug-uri.
cu toate acestea, LLVM cu proiectul LLDB a fost incredibil de îmbunătățit și modernizat până în prezent ca fiind cel al proiectului open-source de bază din lume.
deci, cred că, cel puțin, LLDB ar trebui să fie utilizat pentru mediul de dezvoltare Apple, deoarece LLDB a furat poziția GDB și este deja debugger implicit primar cel puțin în Apple world.
(la sfârșitul lunii septembrie, 2016, Xcode 8 integrarea LLVM și LLDB a fost lansat oficial, ceea ce înseamnă destul de mult timp a fost trecut de la LLVM/LLDB este implicit instrument-lanț pentru Xcode.)
dar, știm cu toții deja GDB a fost istoric și puternic verificate și luptă dovedit debugger peste 30 de ani, care este minunat.

Deci, aș spune…
aș dori să folosesc lldb în timp ce folosesc clang, utilizați gdb în timp ce utilizați compilatorul gcc ca combinație bună sau pereche, deoarece lldb se bazează pe llvm, în timp ce gdb este un depanator GNU.

aș vrea să vă fie de ajutor.

mulțumesc.

Lasă un răspuns

Adresa ta de email nu va fi publicată.