web-dev-qa-db-fra.com

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

En bref: quelqu'un connaît-il une interface graphique pour gdb qui la rapproche ou rapproche de l'ensemble de fonctionnalités que vous obtenez dans la version plus récente de Visual C++?

En détail: en tant que personne qui a passé beaucoup de temps à programmer sous Windows, l’un des plus gros obstacles que j’ai rencontrés chaque fois que je dois coder C++ sous Linux est que le débogage de tout élément à l’aide de la ligne de commande gdb me prend plusieurs fois plus longtemps 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 recherche une interface graphique qui:

  • Gère tous les éléments de base tels que le pas à pas et dans le code, les variables de surveillance et les points d'arrêt
  • Comprend et peut afficher le contenu de types de données C++ complexes et imbriqués
  • Ne vous trompez pas et préférez, de manière intelligente, parcourir le code basé sur un modèle et les structures de données tout en affichant des informations pertinentes telles que les types de paramètres
  • Peut gérer des applications filetées et basculer entre différents threads pour parcourir ou afficher l’état de
  • Peut gérer l'attachement à un processus déjà commencé ou la lecture d'un dump, en plus de démarrer le programme dans gdb

Si un tel programme n'existe pas, j'aimerais alors parler des expériences vécues avec des programmes qui rencontrent au moins certains points. Quelqu'un a-t-il des recommandations?

Edit:
Énumérer les possibilités est très bien, et je vais prendre ce que je peux obtenir, mais ce serait encore plus utile si vous pouviez inclure dans vos réponses:
(a) Que vous utilisiez ou non cette interface graphique et, dans l'affirmative, quels commentaires positifs/négatifs avez-vous sur celle-ci?.
(b) Si vous connaissez les fonctionnalités mentionnées ci-dessus qui sont/ne sont pas prises en charge

Les listes sont faciles à trouver, les sites comme celui-ci sont formidables car vous pouvez avoir une idée de l'expérience personnelle des utilisateurs avec les applications.

204
HappyDude

Vous ne trouverez pas quoi que ce soit superposant à GDB ce qui peut rivaliser avec la puissance brute du débogueur Visual Studio. C'est trop puissant, et c'est trop bien intégré dans l'IDE.

Pour une alternative à Linux, essayez DDD si les logiciels libres sont votre truc.

55
Vicent Marti

Eclipse CDT fournira une expérience comparable à l’utilisation de Visual Studio. J'utilise quotidiennement Eclipse CDT pour écrire du code et déboguer des processus locaux et distants.

Si vous n'êtes pas familier avec l'utilisation d'un IDE basé sur Eclipse, l'interface graphique prendra un peu de temps pour s'y habituer. Cependant, une fois que vous avez compris les idées de l'interface graphique propres à Eclipse (par exemple, une perspective), l'utilisation de l'outil devient une expérience agréable.

L'outil CDT fournit un indexeur C/C++ décent qui vous permet de trouver rapidement des références à des méthodes dans votre base de code. Il fournit également un outil d’expansion de macro Nice et une prise en charge limitée du refactoring.

En ce qui concerne la prise en charge du débogage, CDT est capable de tout faire dans votre liste, à l'exception de la lecture d'un fichier de vidage de la mémoire (cela peut prendre en charge, mais je n'ai jamais essayé d'utiliser cette fonctionnalité). De plus, mon expérience en matière de débogage de code à l'aide de modèles est limitée, donc je ne suis pas sûr du type d'expérience que CDT fournira à cet égard.

Pour plus d'informations sur le débogage à l'aide d'Eclipse CDT, vous pouvez consulter ces guides:

84
Jon Ball

gdb -tui fonctionne bien si vous voulez quelque chose de graphique, mais toujours basé sur les caractères.

78
Carleton

Départ Débogueur C/C++ Nemiver . Il est facile à installer dans Ubuntu (Outils de développement/Débogage).

Mise à jour: Nouveau lien.

47
Sergey Shandar

Je déteste l'idée de développement Windows, mais le débogueur VC++ est l'un des meilleurs que j'ai vus. Je n'ai pas trouvé d'interface graphique proche de celle de VC.

GDB est génial une fois que vous vous y habituez. Utilisez-le suffisamment en colère et vous deviendrez très compétent. Je peux faire le tour d'un programme faisant tout ce que vous avez énuméré sans plus d'effort. Il a fallu un mois ou deux de souffrances sur une liaison SSH vers un serveur distant avant que je sois compétent. Je n'y retournerai jamais.

DDD est vraiment puissant mais c’était plutôt bogué. Je l'ai trouvé gelé assez souvent quand il a reçu des messages de GDB que ça ne marchait pas. C’est bien parce qu’il a une fenêtre d’interface gdb qui vous permet de voir ce qui se passe et d’interagir directement avec gdb. DDD ne peut pas être utilisé sur une session X distante dans mon environnement (un problème réel, car je suis assis sur un client léger lorsque je fais un développement Unix) pour une raison quelconque, alors c'est pour moi.

KDevelop a suivi le style typique de KDE et a exposé TOUT à l’utilisateur. De plus, je n'ai jamais eu de chance de déboguer des programmes non KDevelop dans KDevelop.

Le studio de programmation Gnat (GPS) est en fait un très bon point de départ pour GDB. Il ne gère pas uniquement les projets Ada, il est donc intéressant d'essayer si vous avez besoin d'un débogueur.

Vous pouvez utiliser Eclipse, mais il est assez lourd et beaucoup de personnes Unix expérimentées avec lesquelles j'ai travaillé (avec moi) se moquent bien de son interface, qui ne se contente pas de STFU et ne vous échappe pas. Eclipse semble également prendre beaucoup de place et courir comme un chien.

29
Adam Hawes

Qt Creator semble être une bonne chose. Un collègue m'a montré un moyen de le configurer pour le débogage:

  • Créez un nouveau projet, "Importer un projet basé sur Makefile".
  • Pointez-le sur le dossier de votre projet racine (il indexera les sources en dessous et il est incroyablement rapide).
  • Accédez aux paramètres du projet et ajoutez une configuration d'exécution, puis spécifiez le fichier exécutable que vous souhaitez déboguer et ses arguments.
  • Qt Creator semble insister pour construire votre projet avant de le déboguer. Si vous ne le souhaitez pas ou n'utilisez pas make, vous pouvez remplacer la commande make. Je l'ai changé en "vrai". :)

Cela peut sembler un peu fastidieux pour le débogage d'une application que j'avais déjà compilée, mais cela en vaut la peine. Le débogueur affiche les threads, les piles et les variables locales de la même manière que Visual Studio et utilise même de nombreux raccourcis clavier identiques. Il semble bien gérer les templates, au moins std :: string et std :: map. La liaison aux processus existants et aux vidages mémoire semble être prise en charge, bien que je ne l’aie pas encore testée.

Gardez à l'esprit que je l'ai utilisé pendant moins d'une heure maintenant, mais je suis impressionné jusqu'à présent.

28
Soulman

J'utilise gdb, simple et utile

26
cod

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

De plus, si vous n'êtes pas associé à GDB et que vous ne craignez pas de payer un peu d'argent, j'essaierais TotalView. La courbe d’apprentissage est un peu raide (elle pourrait certainement être plus intuitive), mais c’est le meilleur débogueur C++ que j’ai jamais utilisé sur n’importe quelle plate-forme et elle peut être étendue pour permettre à vos objets d’être examinés de manière personnalisée Liste STL en tant que liste réelle d’objets, et non un groupe de données internes confuses, etc.)

16
Nick Bastin

Découvrez le projet Eclipse CDT. C'est 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 coulisse). Il est disponible sur une grande variété de plates-formes.

8
user14636

L’interface emacs, étroitement liée à l’IDE ​​emacs, est tout aussi confortable que l’interface Eclipse gdb. Si vous travaillez déjà avec emacs, cela vous plaira:

GDB Emacs Frontend

7

J'ai utilisé KDbg (ne fonctionne que sous KDE).

6
codeguru

Qt Creator sur Linux est certainement à égalité avec Visual Studio sur Windows pour C++. Je dirais même mieux du côté du débogueur.

5
Marv

Il y en a un IDE qui manque dans cette liste et qui est très efficace (je l'ai utilisé dans de nombreux projets C/C++ sans aucun problème)): Netbeans .

5
Florent

DDD est l’interface GNU pour gdb: http://www.gnu.org/software/ddd/

5
mmattax

J'ai essayé plusieurs solutions pour gdb et j'ai trouvé que DDD était le meilleur d'entre elles. Et bien que je ne puisse pas commenter d’autres offres non gdb pour Linux, j’ai utilisé un certain nombre d’autres débogueurs sur d’autres plateformes.

gdb fait la majorité des choses que vous avez dans votre liste de souhaits. DDD met un meilleur front sur eux. Par exemple, la commutation de threads est simplifiée. La définition de points d'arrêt est aussi simple que vous le souhaiteriez.

Vous obtenez également une fenêtre Cli au cas où vous souhaiteriez faire quelque chose d'obscur.

La seule fonctionnalité de DDD qui se démarque de tout autre débogueur que j'ai utilisé est la "représentation graphique" des données. Cela vous permet d'afficher et d'organiser des structures, des objets et de la mémoire sous forme de zones déplaçables. Un double clic sur un pointeur ouvrira les données déréférencées avec des liens visuels vers le parent.

5
Andrew Edgecombe

Avez-vous déjà jeté un coup d'œil à débogueur DS-5 ?

Il existe une version payante qui comprend de nombreuses fonctionnalités utiles, mais vous pouvez également utiliser Community Edition gratuitement (ce qui est également très utile, en particulier pour les systèmes embarqués).

J'ai une expérience positive avec cet outil lors du débogage des applications Android sur un périphérique réel utilisant Eclipse.

3
Viktor Malyi

En tant que connaisseur de Visual Studio, j'ai examiné plusieurs IDE open source pour le remplacer, et KDevelop est l’OMI la plus proche de tout ce qu’une personne de Visual C++ peut s’asseoir et commencer à utiliser. Lorsque vous exécutez le projet en mode débogage, il utilise gdb mais kdevelop gère pratiquement tout le processus, de sorte que vous n'avez pas à savoir qu'il s'agit de gdb; vous ne faites que suivre ou assigner des surveillances à des variables.

Malheureusement, il n'est toujours pas aussi performant que le débogueur Visual Studio.

3
Dennis Ferron

Vous ne mentionnez pas si vous utilisez Windows ou UNIX.

Sur les systèmes UNIX, KDevelop est bon, mais j'utilise KDbg car il est facile à utiliser et fonctionnera également avec des applications non développées dans KDevelop.

Eclipse est bon sur les deux plates-formes.

Sous Windows, il existe un excellent package appelé Wascana Desktop Developer , qui comprend Eclipse CDT et MinGW, tous emballés et préconfigurés pour un minimum de souffrances. C’est la meilleure chose que j’ai trouvée pour développer du code GNU sous Windows.

J'ai utilisé tous ces débogueurs et aucun d'entre eux n'est aussi bon que MS Dev Studio. Eclipse/Wascana est probablement la solution la plus proche, mais elle a des limitations, car vous ne pouvez pas entrer dans les DLL et elle ne permet pas d’examiner de manière aussi satisfaisante les variables.

3
Adam Pierce

Les informations de débogage générées par g ++ sont en grande partie limitées. Emacs fournit une interface à gdb qui vous permet de la contrôler via les barres d’outils/menus et d’afficher les données dans des fenêtres séparées, ainsi que de saisir directement les commandes gdb. Le CDT d'Eclipse fournit des outils similaires. J'ai entendu parler d'Anjuta et de Code :: Blocks mais je ne les ai jamais utilisés.

3
Allen

Le Code: Blocks C++ IDE a un wrapper graphique, avec quelques-unes des fonctionnalités que vous voulez, mais rien à voir avec la puissance de VS.

2
crobar

VisualGDB est un autre plug-in Visual Studio permettant de développer et de déboguer des applications sur les plates-formes Linux et intégrées.

2
Sergey Zhukov

Avez-vous essayé gdb -w avec cygwin gdb. Il est supposé avoir une interface Windows qui fonctionne assez bien.

Le seul problème que j'ai constaté est que sur mon ordinateur actuel, il n'a pas fonctionné de cette façon avant l'installation de ddd. Je soupçonne que tcltk a été installé lors de l’installation de ddd.

1
BubbaT

KDevelop fonctionne plutôt bien.

1
Harold Ekstrom

Si vous recherchez gdb sous Visual Studio, cochez WinGDB .

0
Dominic.wig

La dernière version de Geany le supporte (seulement sous Linux)

0
Milan Babuškov

Au cours des 15 derniers mois, j’ai utilisé Insight (avec FC6). Ce n'est pas génial, c'est écrit en Tcl/Tk, mais c'est simple et utile. DDD est de qualité/utilité similaire, mais un peu plus difficile à utiliser (divers pièges et omissions de l'interface graphique). J'ai aussi essayé d'intégrer gdb avec mon IDE, SlickEdit. Cela a fonctionné correctement (j'ai joué 4 heures avec), mais je n’ai pas aimé les changements de contexte de l’interface graphique. J'aime que mon IDE reste inchangé pendant le débogage; sous Windows, j'utilise SlickEdit pour IDE et Visual Studio Debugger pour le débogage. Donc, à partir de 3: Insight, DDD et SlickEdit, Insight est mon premier choix. Je l’utilise> 95% du temps, les commandes gdb et DDD en ligne de commande représentant les 5% restants. Si j'en ai l'occasion, j'évalue Eclipse à un moment donné, mon ordinateur de travail ne semble pas disposer de suffisamment de RAM (1 Go seulement) pour fonctionner correctement.

J'ai également entendu beaucoup d'éloges pour TotalView, notamment en première main lors d'un entretien d'embauche. J'ai obtenu un eval pour notre société à la fin de 2008, mais nous n'avons finalement pas procédé car gdb était suffisant pour nos besoins; et c'est gratuit et omniprésent.

0
Radim Cernej

Je cherchais un débogueur pour parcourir un programme en cours d'exécution. Dites: attachez. Le programme a été construit avec Eclipse, mais à cause peut-être de certains obstacles multithreadding, aucun fichier source n’est favorable. Peu importe.

Je suis très à l'aise avec NetBeans.

  • [debug] du menu -> Attach Deugger ...
  • comme processus a choisi celui à déboguer
  • comme projet [nouveau projet]

Maintenant la fenêtre disparaît et vous ne voyez rien. se détacher du processus. Le carré de lecture "Stop" aide.

  • importer la source du projet comme par exemple dossier. ".../MyProject/src
  • Il apparaît maintenant dans votre projet et vous pouvez définir des points d'arrêt.
  • à nouveau ttach debugger
  • choisi le processus de débogage.
  • le débogueur devrait s'arrêter si le programme atteint le prochain point d'arrêt.

Aller dans [fenêtre] -> [Débogage] -> Votre fenêtre sera-t-elle compatible?.

0
Cutton Eye

Utilisez www.zero-bugs.com/ Zero debugger, il nécessite le support de C++ 0x de gcc

0
siddhusingh