215 votes

Existe-t-il une interface graphique C++ gdb pour Linux ?

En bref : Est-ce que quelqu'un connaît une interface graphique pour gdb qui l'amène au même niveau ou proche de l'ensemble des fonctionnalités que l'on obtient dans la version la plus récente de Visual C++ ?

En détail : En tant que personne ayant passé beaucoup de temps à programmer sous Windows, l'une des plus grandes pierres d'achoppement que j'ai trouvées chaque fois que j'ai dû coder du C++ sous Linux est que le débogage de quoi que ce soit en utilisant la ligne de commande gdb me prend plusieurs fois plus de temps que dans Visual Studio, et cela ne semble pas s'améliorer avec la pratique. Certaines choses sont simplement plus faciles ou plus rapides à exprimer graphiquement.

Plus précisément, je cherche une interface graphique qui :

  • Gère tous les éléments de base comme le passage au-dessus et dans le code, les variables de surveillance et les points d'arrêt.
  • Comprend et peut afficher le contenu des types de données C++ complexes et imbriqués.
  • ne s'embrouille pas et peut de préférence parcourir intelligemment le code et les structures de données modélisés tout en affichant des informations pertinentes telles que les types de paramètres.
  • Peut gérer des applications threadées et passer d'un thread à l'autre pour parcourir ou visualiser l'état d'une application.
  • Peut gérer l'attachement à un processus déjà démarré ou la lecture d'un core dump, en plus du démarrage du programme dans gdb.

Si un tel programme n'existe pas, j'aimerais connaître les expériences des gens avec des programmes qui répondent au moins à certains de ces points. Quelqu'un a-t-il des recommandations à faire ?

Edit :
C'est bien d'énumérer les possibilités, et je prends ce que je peux avoir, mais ce serait encore plus utile si vous pouviez inclure dans vos réponses :
(a) Si vous avez utilisé ou non cette interface graphique et si oui, quels sont vos commentaires positifs/négatifs à son sujet.
(b) Si vous le savez, quelles sont les caractéristiques susmentionnées qui sont/ne sont pas supportées.

Les listes sont faciles à trouver, les sites comme celui-ci sont excellents car ils permettent de se faire une idée des expériences personnelles des gens avec les applications.

21 votes

+1 pour "Les sites comme celui-ci sont géniaux car ils permettent de se faire une idée des expériences personnelles des gens". De nos jours, trop de gens se contentent de dresser une liste, ce qui, à mon avis, passe complètement à côté de l'essentiel.

1 votes

0 votes

29voto

Adam Hawes Points 4153

Je déteste l'idée du développement Windows, mais le débogueur VC++ est parmi les meilleurs que j'ai vus. Je n'ai pas trouvé d'interface graphique qui se rapproche de celle de VC.

GDB est génial une fois que vous vous y êtes habitué. Utilisez-le dans la colère suffisamment et vous deviendrez très compétent. Je peux faire tourner un programme en faisant toutes les choses que vous avez énumérées sans trop d'effort. Il m'a fallu un mois ou deux de souffrance à travers un lien SSH vers un serveur distant avant de devenir compétent. Mais je ne reviendrai jamais en arrière.

DDD est vraiment puissant mais il était assez bogué. Il se bloquait souvent lorsqu'il recevait des messages de GDB qu'il ne comprenait pas. Il est bon parce qu'il a une fenêtre d'interface gdb qui vous permet de voir ce qui se passe et aussi d'interagir directement avec gdb. DDD ne peut pas être utilisé sur une session X distante dans mon environnement (un vrai problème, puisque je suis assis devant un client léger quand je fais du développement Unix) pour une raison quelconque, donc il est hors jeu pour moi.

KDevelop suit le style typique de KDE et expose TOUT à l'utilisateur. Je n'ai jamais eu de chance de déboguer des programmes non KDevelop dans KDevelop.

Le Gnat Programming Studio (GPS) est en fait un très bon frontal à GDB. Il ne gère pas seulement les projets Ada, il vaut donc la peine de l'essayer si vous avez besoin d'un débogueur.

Vous pourriez utiliser Eclipse, mais c'est un logiciel assez lourd et beaucoup de personnes expérimentées sous Unix avec lesquelles j'ai travaillé (moi y compris) ne se soucient pas beaucoup de son interface, qui ne se contente pas de vous laisser faire. Eclipse semble également prendre beaucoup d'espace et fonctionner comme un chien.

2 votes

Je voulais juste ajouter mon projet, gdbgui ( github.com/cs01/gdbgui ). Il s'agit d'une architecture client/serveur, qui fonctionne donc bien pour déboguer des machines distantes sans qu'une session X soit nécessaire. Il dispose également d'un terminal pour interagir directement avec GDB, et de visuels pour afficher les structures de données, similaires à ceux de DDD.

0 votes

Comparaisons avec les avantages et les inconvénients basés sur l'expérience. C'est exactement ce dont cette question a besoin.

27voto

cod Points 111

J'utilise cgdb, simple et utile.

16voto

Nick Bastin Points 12627

J'utilise beaucoup DDD, et il est assez puissant une fois que vous avez appris à l'utiliser. Une chose que je dirais est de ne pas l'utiliser avec X sur le WAN car il semble faire beaucoup de mises à jour d'écran inutiles.

De plus, si vous n'êtes pas habitué à GDB et que cela ne vous dérange pas de débourser un peu d'argent, j'essaierais TotalView. Il a une courbe d'apprentissage un peu raide (il pourrait certainement être plus intuitif), mais c'est le meilleur débogueur C++ que j'ai jamais utilisé sur n'importe quelle plateforme et il peut être étendu pour introspecter vos objets de manière personnalisée (ce qui vous permet de voir une liste STL comme une liste réelle d'objets, et non comme un tas de membres de données internes déroutants, etc.)

8voto

Entwash Points 49

Consultez le projet Eclipse CDT. Il s'agit d'un plugin pour Eclipse orienté vers le développement C/C++ et qui inclut une perspective de débogage assez riche en fonctionnalités (qui utilise GDB en arrière-plan). Il est disponible sur une grande variété de plateformes.

7voto

mmattax Points 10865

DDD est le frontal GNU de gdb : http://www.gnu.org/software/ddd/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X