web-dev-qa-db-fra.com

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 j'ai commencé à recevoir un avertissement pour mettre à jour mon débogueur de GDB vers LLDB.

50
Abhinav

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

Pourtant...

Vous voudrez peut-être faire un voyage sur les forums à developer.Apple.com. Il y a pas mal de rumeurs sur les problèmes avec LLDB en ce moment (dans XCode 4.3.1). Un problème désagréable, que les gens de Apple ont confirmé, est que la visualisation des ivars en marchant peut vous montrer les mauvaises valeurs.

43
infinitetape

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++, 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 plus grand projet LLVM, comme l'analyseur d'expression Clang et le désassembleur LLVM.
LLDB est le remplacement "à partir de zéro" 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 de contrôle de flux 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 familières. En plus d'utiliser la configuration standard, vous pouvez facilement personnaliser LLDB en fonction de vos besoins.

(citation de Apple site officiel)
/* 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 gros programmes.) Cependant, je ne l'ai pas trouvé. s'il y a quelqu'un qui possède ces données, veuillez modifier cet article. * /

GDB et LLDB sont bien sûr d'excellents débogueurs sans aucun doute.
GDB fait 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 le compilateur LLVM.

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 différents ensembles 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ébogage.
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 et organise clairement la différence de commandes.

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

Execution command difference between GDB and LLDBBreak-Point command difference between GDB and LLDBExamining variable command difference between GDB and LLDBExamining thread state command difference between GDB and LLDB

3. Par opinion personnelle

LLDB a été entièrement intégré à partir de Xcode IDE 5 par défaut en tant que débogueur principal.
.
Cependant, le projet LLVM avec LLDB a été incroyablement amélioré et mis à niveau jusqu'à présent comme l'un des principaux projets open source dans le monde.
Donc, je pense qu'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à le débogueur par défaut principal au moins dans Apple monde.
(Fin septembre 2016, Xcode 8 intégrant LLVM et LLDB a été officiellement publié, ce qui signifie que beaucoup de temps s'est écoulé depuis que 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 débogué éprouvé sur 30 ans, 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 bonne combinaison ou paire car lldb est basé sur llvm, alors que gdb est un débogueur GNU.

Je souhaite que cela puisse vous être utile.

Merci.

17
boraseoksoon