Existe-t-il une interface graphique C ++ gdb pour Linux? [fermé]


210

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

En détail: en tant que quelqu'un qui a passé beaucoup de temps à programmer dans Windows, l'un des plus gros obstacles que j'ai trouvés chaque fois que je dois coder C ++ sous Linux est que le débogage de tout ce qui utilise la ligne de commande gdb me prend plusieurs fois plus de temps que dans Visual Studio, et il 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 toutes les bases comme passer au-dessus et dans le code, surveiller les variables et les points d'arrêt
  • Comprend et peut afficher le contenu de 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èles tout en affichant les 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 la connexion à un processus déjà démarré ou la lecture d'un vidage de mémoire, en plus de démarrer le programme dans gdb

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

Edit:
Énumérer les possibilités est génial, et je prendrai ce que je peux obtenir, mais il serait encore plus utile si vous pouviez inclure dans vos réponses:
(a) si vous avez réellement utilisé cette interface graphique et si oui , quels commentaires positifs / négatifs vous en avez.
(b) Si vous savez, lesquelles des fonctionnalités susmentionnées sont / ne sont pas prises en charge

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


21
+1 pour "Des sites comme celui-ci sont excellents car vous pouvez vous faire une idée des expériences personnelles des gens." De nos jours, trop de gens font juste un vidage de liste auquel l’IMHO passe complètement à côté.
kizzx2



Consultez cette liste des frontaux de gdb ici: sourceware.org/gdb/wiki/GDB%20Front%20Ends , et essayez le premier de la liste. Semble très prometteur et moderne et est multiplateforme car il est basé sur un navigateur: gdbgui.com .
Gabriel Staples

Réponses:


55

Vous ne trouverez rien de superposant GDB qui puisse rivaliser avec la puissance brute du débogueur Visual Studio. Il est tout simplement trop puissant et il est tout simplement trop bien intégré à l'IDE.

Pour une alternative Linux, essayez DDD si vous préférez les logiciels libres.


2
WinDBG est bien supérieur à ce que fournit Visual Studio. Le débogueur Visual Studio repose sur la même architecture que WinDBG. Cela dit, GDB n'a rien à demander en le comparant à Windbg. Un débogueur graphique meilleur que DDD serait parfait. Eclipse CDT est une bonne alternative. Je pense qu'il y avait une interface utilisateur KDE
bigmonachus

114
Oh regarde. Une réponse qui fait une réclamation sans la sauvegarder du tout. Je trouve également étrange que la réponse qui ne répond pas à la question ait été acceptée.
alternative

3
pour ceux qui viennent ici à la recherche d'une vraie réponse, sachez que ddd est une poubelle. La meilleure interface graphique de débogage pour Linux que j'ai trouvée est IDA, qui n'est pas un logiciel libre.
bkconrad

1
Répondez le mieux possible à la question ou ne dites rien. Après avoir utilisé les deux, Visual Studio est plus complet, mais DDD est assez bon pour que je ne manque pas VS. Malheureusement, DDD montre son âge.
Alan De Smet

6
Ce message doit être mis à jour / amélioré. Qt Creator est génial, à égalité avec Visual Studio.
vharron

85

Eclipse CDT offrira une expérience comparable à l'utilisation de Visual Studio. J'utilise Eclipse CDT quotidiennement 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 d'interface graphique uniques à 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 aux méthodes dans votre base de code. Il fournit également un bel outil d'extension de macro et un support de refactorisation limité.

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 vidage de mémoire (il peut le prendre en charge, mais je n'ai jamais essayé d'utiliser cette fonctionnalité). De plus, mon expérience avec le débogage de code à l'aide de modèles est limitée, donc je ne sais pas quel type d'expérience CDT fournira à cet égard.

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


10
La lecture des vidages mémoire est prise en charge. (Il est appelé le débogueur Postmortem.)
Josh Kelley

J'ai eu une meilleure expérience dans le débogage Eclipse CDT que dans Visual Studios. Je n'ai pas donné trop de chance à MSVC.
notlesh

3
Je pense que QtCreator devrait être mentionné aux côtés d'Eclipse car il est comparable.
nonsensickle

78

gdb -tui fonctionne bien si vous voulez quelque chose d'interface graphique, mais toujours basé sur des caractères.


45
Vous pouvez également passer en mode TUI (interface utilisateur de texte) en gdb en utilisant la commande «-». Le retour à l'invite de commande est Ctrl-X Ctrl-A. En mode TUI, haut, bas, gauche et droite se déplacent dans la source. Utilisez Ctrl-P, Ctrl-N, Ctrl-F et Ctrl-B pour naviguer dans l'historique de la ligne de commande.
Ben Combee

Ceci est exactement ce que je cherchais. La puissance de la ligne de commande gdb avec des vues utiles qui se mettent à jour lorsque je me déplace.
Kevin Cox

7
Un .gdbinit sur steriods vous donne une interface graphique basée sur les caractères vraiment impressionnante, avec la couleur: github.com/cyrus-and/gdb-dashboard
cs01

J'aime bien gdb-dashboard mais je dois aussi mentionner voltron .
nonsensickle

3
@Barry merci. Pour les curieux, voici un lien: github.com/cs01/gdbgui . Il a une structure de données similaire à DDD, une architecture client / serveur pour déboguer facilement des machines distantes sans transfert X nécessaire, et la possibilité d'explorer des variables complexes, etc.
cs01

47

Consultez le débogueur Nemiver C / C ++ . Il est facile à installer dans Ubuntu (Developer Tools / Debugging).

Mise à jour: nouveau lien.


Absolument fabuleux , également pris en charge avec apt: 'apt-get install nemiver'. Mon seul problème est que la construction à partir du dépôt a échoué en raison d'un «Aucun package gconf-2.0 trouvé».
J Evans

l'interface est assez claire et agréable à lire, mais elle se bloque parfois lors de l'utilisation des capacités d'interface v0.9.6. Il accepte également les paramètres d'application débogués, ce que je ne peux toujours pas laisser faire à ddd.
Aquarius Power

Également disponible sur Fedora 30 (au moins). Je suis juste tombé sur cette question et nemiver.
user3236841

31

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

  • Créez un nouveau projet, "Importation d'un projet basé sur Makefile".
  • Pointez-le sur votre dossier de 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 l'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 voulez pas cela, ou n'utilisez pas make, allez simplement dans projets -> build (panneau de gauche), puis, dans le panneau de droite dans "Build Steps", supprimez toutes les étapes, y compris l'étape par défaut lorsque vous avez créé le projet.

Cela peut sembler un peu difficile pour déboguer 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 d'une manière similaire à Visual Studio et utilise même plusieurs des mêmes raccourcis clavier. Il semble bien gérer les modèles, au moins std :: string et std :: map. La connexion aux processus existants et aux vidages de mémoire semble être prise en charge, bien que je ne l'ai pas encore testée.

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


29

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 proche de celle de VC.

GDB est génial une fois que vous vous y êtes vraiment habitué. Utilisez-le avec suffisamment de 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 trop d'effort. Il m'a fallu environ un mois pour souffrir d'une liaison SSH vers un serveur distant avant d'être compétent. Je ne reviendrais jamais cependant.

DDD est vraiment puissant mais c'était assez buggé. Je l'ai trouvé gelé assez souvent quand il recevait des messages de GDB qu'il ne tenait pas. C'est bien car il a une fenêtre d'interface gdb pour que vous puissiez voir ce qui se passe et aussi interagir directement avec gdb. DDD ne peut pas être utilisé sur une session X distante dans mon environnement (un vrai problème, car je suis assis sur un client léger lorsque je fais du développement Unix) pour une raison quelconque, c'est donc pour moi.

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

Le Gnat Programming Studio (GPS) est en fait un bon front-end pour GDB. Il ne gère pas seulement les projets Ada, il vaut donc la peine d'essayer si vous avez besoin d'un débogueur.

Vous pouvez utiliser Eclipse, mais son poids est assez lourd et beaucoup de personnes Unix chevronnées avec lesquelles j'ai travaillé (moi y compris) ne se soucient pas beaucoup de son interface, qui ne se contentera pas de STFU et ne vous gênera pas. Eclipse semble également prendre beaucoup de place et courir comme un chien.


2
Je voulais juste brancher mon projet, gdbgui ( github.com/cs01/gdbgui ). C'est une architecture client / serveur, donc fonctionne bien le débogage de machines distantes sans session X requise. Il possède également un terminal pour interagir directement avec GDB et des visuels pour afficher les structures de données, similaires à DDD.
cs01

Comparaisons avec des avantages et des inconvénients basés sur l'expérience. Juste ce dont cette question a besoin. ty
Heath Raftery


16

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

De plus, si vous n'êtes pas connecté à GDB et que cela ne vous dérange pas de verser un peu d'argent, j'essaierais TotalView. Il a une courbe d'apprentissage assez abrupte (il pourrait certainement être plus intuitif), mais c'est le meilleur débogueur C ++ que j'ai jamais utilisé sur n'importe quelle plate-forme et peut être étendu pour introspecter vos objets de manière personnalisée (vous permettant ainsi de visualiser un Liste STL en tant que liste réelle d'objets, et non un groupe de membres de données internes déroutants, etc.)


Je ne parviens pas du tout à faire fonctionner DDD sur le X distant; se bloque simplement avec des erreurs Xlib sur mon client léger :(
Adam Hawes

totalview ressemble à une alternative viable. Je ne considère pas DDD comme meilleur que l'interface curses gdb.
deft_code

8

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




6

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


3
KDbg n'est pas limité à KDE.
nobar

C'est génial . Je me demande où ça a été tout ce temps.
edmz

5

J'ai essayé quelques guis différents pour gdb et j'ai trouvé que DDD était le meilleur d'entre eux. 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 plates-formes.

gdb fait la majorité des choses que vous avez dans votre liste de souhaits. DDD leur offre un front plus agréable. Par exemple, le changement de thread est simplifié. La définition des points d'arrêt est aussi simple que vous vous attendez.

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

La seule caractéristique de DDD qui se démarque de tout autre débogueur que j'ai utilisé est le "graphique" des données. Cela vous permet d'afficher et d'organiser les structures, les objets et la mémoire sous forme de boîtes glissables. Double-cliquez sur un pointeur pour ouvrir les données déréférencées avec des liens visuels vers le parent.


Ddd fonctionne-t-il sur des programmes avec des arguments? Je n'ai pas réussi à lui faire passer les arguments ...
user3236841

Si je me souviens bien, DDD peut vous donner une fenêtre de console directement sur GDB. Dans la console GDB, vous pouvez définir les arguments de la ligne de commande à l'aide de la commande "set args xyz abc".
Andrew Edgecombe

5

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


5

Il y 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 .


Je préfère largement cgdb maintenant que je m'y suis habitué, mais Netbeans était un excellent tremplin pour VS.
zzxyz

3

Ce qui peut être franchi va être limité par les informations de débogage que g ++ produit, dans une large mesure. Emacs fournit une interface à gdb qui vous permet de le contrôler via les barres d'outils / menus et d'afficher les données dans des fenêtres séparées, ainsi que de taper 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

En tant que familier de Visual Studio, j'ai regardé plusieurs IDE open source pour le remplacer, et KDevelop est l'IMO le plus proche d'être quelque chose qu'une personne Visual C ++ peut simplement s'asseoir et commencer à utiliser. Lorsque vous exécutez le projet en mode débogage, il utilise gdb mais kdevelop gère à peu près tout pour que vous n'ayez pas à savoir que c'est gdb; vous êtes juste un pas ou assigner des montres à des variables.

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


3

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 plateformes.

Sous Windows, il existe un excellent package appelé Wascana Desktop Developer qui est Eclipse CDT et MinGW tous emballés et préconfigurés correctement pour le minimum de douleur. 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 le plus proche mais il a des limitations comme vous ne pouvez pas entrer dans les DLL et il ne fait pas aussi bien l'examen des variables.


3

Avez-vous déjà jeté un œil au 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 d'applications Android sur un appareil réel à l'aide d'Eclipse.


2

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


2

VisualGDB est un autre plugin Visual Studio pour développer et déboguer des applications sur Linux et les plates-formes embarquées.



1

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 trouvé, c'est que sur ma machine actuelle, il ne fonctionnait pas de cette façon avant d'avoir installé ddd. Je soupçonne qu'il nécessite tcltk qui a été installé lorsque j'ai installé ddd.




0

Au cours des 15 derniers mois, j'ai utilisé Insight (fourni avec FC6). Ce n'est pas génial, c'est écrit en Tcl / Tk, mais c'est simple et utile. DDD est de qualité / utilitaire similaire, mais un peu plus difficile à utiliser (divers accrochages et omissions de l'interface graphique). J'ai également essayé d'intégrer gdb à mon IDE, SlickEdit. Cela a bien fonctionné (j'ai joué environ 4 heures avec), mais je n'ai pas aimé les changements de contexte GUI. 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 des 3: Insight, DDD et SlickEdit, Insight est mon premier choix, je l'utilise> 95% du temps, la ligne de commande gdb et DDD constituent les 5% restants. Si j'en ai l'occasion, j'évaluerai Eclipse à un moment donné, mon PC de travail ne semble pas avoir suffisamment de RAM (1 Go uniquement) pour faire fonctionner Eclipse raisonnablement bien.

J'ai également entendu beaucoup d'éloges pour TotalView, y compris de première main lors d'un entretien d'embauche. J'ai obtenu un eval pour notre entreprise fin 2008, mais au final nous n'avons pas procédé car gdb était assez bien pour nos besoins; et c'est gratuit et omniprésent.


0

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


1
www.zero-bugs.com/ le site est en panne
vharron

0

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'a été apprécié. Peu importe.

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

  • [debug] dans le 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. L'arrêt de lecture carré aide.

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

Aller dans [window] -> [Debugging] -> Will your window make compfortable.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.