Débogueurs GDB Vs LLDB

Quelle est la différence entre les débogueurs GDB et LLDB? J’ai récemment mis à niveau ma version Xcode de 4.2 à 4.3 et commencé à recevoir un avertissement pour mettre à niveau mon débogueur de GDB vers LLDB.

LLDB fait partie de la suite d’outils LLVM dans laquelle Apple évolue, y compris Clang. Il y a des tonnes de fonctionnalités améliorées, y compris des performances améliorées. Il y a une introduction rapide pour les utilisateurs de GDB ici: http://lldb.llvm.org/tutorial.html

Toutefois…

Vous voudrez peut-être faire un voyage sur les forums à l’adresse developer.apple.com. Il y a beaucoup de problèmes avec LLDB en ce moment (dans XCode 4.3.1). Un problème désagréable, confirmé par les gens d’Apple, est que le fait de regarder des ivars en marchant peut vous montrer les mauvaises valeurs.

1. Par différence de définition

Tout d’abord, qu’est-ce que GDB?

“GDB est le débogueur standard pour le système logiciel GNU”
Le débogueur GNU, généralement appelé simplement GDB et nommé gdb en tant que fichier exécutable, est le débogueur standard du système d’exploitation GNU. Cependant, son utilisation n’est pas ssortingctement limitée au système d’exploitation GNU; c’est un débogueur portable qui fonctionne sur de nombreux systèmes de type Unix et fonctionne pour de nombreux langages de programmation, y compris Ada, C, C ++, Objective-C, Free Pascal, Fortran, Java 1 et partiellement d’autres. 2

(citation de wikipedia)

Deuxièmement, qu’est-ce que la LLDB?

«LLDB est un débogueur conçu comme un ensemble de composants réutilisables qui exploitent fortement les bibliothèques existantes dans le projet LLVM plus vaste, comme l’parsingur d’expression Clang et le désassembleur LLVM.
LLDB est le remplaçant d’Apple pour GDB, développé en étroite coordination avec les compilateurs LLVM pour vous apporter un débogage de pointe avec des capacités étendues en matière de contrôle de stream et d’inspection des données. À partir de Xcode 5, tous les projets de développement nouveaux et préexistants sont automatiquement reconfigurés pour utiliser LLDB. L’installation standard de LLDB vous fournit un ensemble complet de commandes conçues pour être compatibles avec les commandes GDB habituelles. En plus d’utiliser la configuration standard, vous pouvez facilement personnaliser LLDB selon vos besoins.

(citation du site officiel d’Apple)
/ * J’ai essayé de trouver des données réelles / pratiques pour prouver la déclaration: LLDB est déjà beaucoup plus rapide que GDB lors du débogage de programmes volumineux. Cependant, je n’ai pas pu le trouver. Si quelqu’un possède ces données, veuillez modifier cet article. * /

GDB et LLDB sont sans aucun doute d’excellents débogueurs.
GDB est une partie du débogueur du projet GNU créé pour fonctionner le long du compilateur GNU.
LLDB est une partie du débogueur du projet LLVM créé pour fonctionner avec le compilateur LLVM.

2. Par différence de l’utilisation des commandes du débogueur

La majorité des commandes sont les mêmes.
Cependant, lldb et gdb, deux débogueurs différents sont développés par différents groupes de développeurs et ont donc des commandes un peu différentes.

C’est un bon lien ci-dessous pour comparer la différence de ces deux commandes de débogueur.
permettez-moi de lier les détails ci-dessous: 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

Cela indique clairement et organise la différence de commandes.

Si le site n’est plus accessible, je résume la différence majeure des commandes ci-dessous à partir du site lié.

Différence de commande d'exécution entre GDB et LLDBDifférence de commande de rupture entre GDB et LLDBExamen de la différence de commande de variable entre GDB et LLDBExamen de la différence de commande d'état des threads entre GDB et LLDB

3. Par avis personnel

LLDB a été entièrement intégré à partir de Xcode IDE 5 par défaut en tant que débogueur principal.
Depuis lors, il y a eu un certain nombre de plaintes concernant la stabilité de la firebase database LLDB, les problèmes de performance et les bogues.
Cependant, le projet LLVM avec LLDB a été incroyablement amélioré et mis à niveau jusqu’à présent parmi le projet open source le plus important au monde.
Donc, je pense au moins, LLDB devrait être utilisé pour l’environnement de développement Apple, car LLDB a volé la position de GDB et est déjà le principal débogueur par défaut au moins dans le monde Apple.
(Fin septembre 2016, Xcode 8 intégrant LLVM et LLDB a été officiellement publié, ce qui signifie que beaucoup de temps a été écoulé depuis que LLVM / LLDB est la chaîne d’outils par défaut pour Xcode.)
Mais, nous soaps tous que GDB a été historiquement et fortement vérifié et débogueur éprouvé sur 30 ans, ce qui est génial.

Alors, je dirais…
Je voudrais utiliser lldb en utilisant clang, utiliser gdb en utilisant le compilateur gcc comme bonne combinaison ou paire car lldb est basé sur llvm, alors que gdb est un débogueur GNU.

Je souhaite que cela pourrait être utile pour vous.

Merci.