Débogueurs GDB Vs LLDB

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

42
demandé sur Eziz Durdyyev 2012-03-14 22:27:05

2 réponses

LLDB fait partie de la suite D'outils LLVM vers laquelle Apple se déplace, 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

Cependant...

Vous voudrez peut-être faire un voyage sur les forums à developer.apple.com. il y a un peu de grondement sur les problèmes avec LLDB en ce moment (dans XCode 4.3.1). Un problème méchant, que les gens D'Apple ont confirmé, est cette visualisation ivars tout en marchant peut vous montrer les mauvaises valeurs.

40
répondu infinitetape 2012-10-09 18:45:27

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 pour le système D'exploitation GNU. Cependant, son utilisation n'est pas strictement 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++, Objectif-c, Free Pascal, Fortran, Java1 et partiellement d'autres.2

(citation de wikipedia)

Deuxièmement, QU'est-ce que LLDB?

"LLDB est un débogueur construit comme un ensemble de composants réutilisables qui exploitent fortement les bibliothèques existantes dans le projet LLVM plus grand, comme L'analyseur D'expression Clang et le désassembleur LLVM.
LLDB est le remplacement "from the ground up" D'Apple pour GDB, développé en étroite coordination avec les compilateurs LLVM pour apporter vous État de l'art débogage avec des capacités étendues dans le contrôle de flux et l'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 LLDB standard vous fournit un ensemble complet de commandes conçues pour être compatibles avec les commandes gdb familières. En plus d'utiliser la configuration standard, vous pouvez facilement personnaliser LLDB en fonction de 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 grands programmes.) Cependant, je ne pouvais pas le trouver. s'il y a quelqu'un ayant ces données connexes, veuillez modifier cet article. */

Gdb et LLDB sont bien sûr d'excellents débogueurs sans aucun doute.
GDB est une partie du débogueur du projet GNU créé pour fonctionner avec le compilateur GNU.
LLDB fait partie du débogueur du projet LLVM créé pour fonctionner avec LLVM compilateur.

2. Par différence d'utilisation de la commande 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 un ensemble différent 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 le détail 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 et organise clairement la différence de commandes.

Dans le cas où le site n'est plus accessible, je résume la différence majeure des commandes ci-dessous par rapport au site lié.

Différence de commande d'exécution entre GDB et LLDBDifférence de commande de point d'arrêt entre GDB et LLDBExamen de la différence de commande variable entre GDB et LLDBExamen de la différence de commande d'état de thread entre GDB et LLDB

3. Par Avis

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 rapport de plainte sur la stabilité de LLDB, les problèmes de performance et les bugs.
Cependant, LLVM avec le projet LLDB a été incroyablement amélioré et mis à niveau jusqu'à présent que celui du projet open-source de base dans le monde.
Donc, je pense, au moins, LLDB devrait être utilisé pour L'environnement de développement Apple puisque LLDB a volé la position de GDB et est déjà débogueur par défaut primaire 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 LLVM/LLDB est la chaîne d'outils par défaut pour Xcode.)
Mais, nous savons tous déjà que GDB a été historiquement et fortement vérifié et que le débogueur a fait ses preuves au cours des années 30, ce qui est génial.

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

J'aimerais que cela puisse vous être utile.

Merci.

11
répondu boraseoksoon 2016-09-27 12:52:19