Question:
Interface graphique décente pour GDB
mrduclaw
2013-03-30 07:30:22 UTC
view on stackexchange narkive permalink

L'apprentissage des commandes GDB fait partie de ma liste de choses à faire, mais en attendant, existe-t-il un débogueur graphique pour les plates-formes * nix qui accepte les commandes Windbg et possède des fonctionnalités similaires? Par exemple, la possibilité de faire apparaître plusieurs fenêtres de mémoire modifiables, de désassembler automatiquement autour d'une zone en cours de progression, de définir une saveur de désassemblage et d'avoir une fenêtre avec des registres qui ont des valeurs modifiables?

@AshRj ah, je vois ce que tu veux dire maintenant. Mon erreur, excuses.
[Voltron] (http://ho.ax/posts/2013/06/voltron-a-hacky-ui-for-gdb/) est totalement nouveau mais semble prometteur (je ne l'ai pas encore testé).
Sur SO: http://stackoverflow.com/questions/79023/is-there-a-c-gdb-gui-for-linux
Dix-sept réponses:
#1
+59
cs01
2016-09-26 05:26:05 UTC
view on stackexchange narkive permalink

J'ai lancé mon propre frontend gdb appelé gdbgui qui est un serveur (en python) qui vous permet d'accéder à un frontend complet dans votre navigateur .

gdbgui screenshot

Install

  pip install gdbgui --upgrade  

ou télécharger sur gdbgui.com

Fonctionne sur toutes les plates-formes (Linux, macOS et Windows) et navigateurs avec JavaScript.

Exécuter

Tapez simplement

  gdbgui  

dans votre terminal, et votre navigateur ouvrira un nouvel onglet .

Fonctionnalités

  • définir / supprimer des points d'arrêt
  • afficher le code source, avec le code machine en ligne facultatif
  • sélectionner l'image actuelle dans la pile
  • parcourir le code source ou le code machine
  • créer / explorer des variables
  • afficher / sélectionner des threads
  • explorer la mémoire
  • afficher les registres
  • fonctionnalité complète du terminal gdb afin que vous puissiez envoyer des commandes gdb traditionnelles et afficher la sortie du programme gdb / inférieur
  • inspiré de l'ama zing Chrome debugger
  • compatible avec le RR de Mozilla, pour le débogage inversé
C'est vraiment du bon travail. La conception va au cœur du cas d'utilisation moyen. Je l'aime. Il prend également en charge le débogage à distance (ou, plutôt, il prend en charge l'utilisation de la commande gdb `hôte distant cible: port`. Bien fait. Peut-être que l'ajout de la possibilité de se connecter à un hôte distant dans le menu serait un complément intéressant. être possible de réduire la taille du «registre»? Toutes les informations sont disponibles, mais (au moins sur ARM) vous ne pouvez pas voir tous les registres à la fois, vous devez donc faire défiler.
Les commentaires ici ne sont pas destinés au support individuel de `gdbgui`. Veuillez ouvrir une nouvelle question sur sx, ou utiliser les canaux de support / bug tracker de gdbgui.
#2
+46
mncoppola
2013-03-30 08:09:56 UTC
view on stackexchange narkive permalink

Bien que certaines personnes ne se soucient pas de son interface, il convient de mentionner que GDB possède également sa propre interface graphique intégrée (appelée TUI).

Vous pouvez démarrer GDB en mode GUI avec la commande : gdb -tui

Une référence rapide aux commandes TUI peut être trouvée ici: http://beej.us/guide/bggdb/#qref

#3
+32
Archenoth
2013-04-04 08:50:08 UTC
view on stackexchange narkive permalink

J'ai généralement utilisé Emacs GUD comme interface GDB.

GDB support in Emacs

Ce n'est pas trop difficile à utiliser, vous permet pour définir visuellement les points d'arrêt (ou via la fenêtre GDB si vous préférez).

Il a plusieurs vues différentes auxquelles vous pouvez accéder à partir d'un menu GDB de niveau supérieur:

GUD Views

Il permet également des astuces telles que vous permettre d'inspecter les valeurs en les survolant:

Mouseover values

Pour l'utiliser, vous devez d'abord naviguer vers le dossier de votre binaire avec Cx Cf , puis Mx gdb (c'est " Alt + X ", puis en tapant" gdb "). Après cela, vous pouvez taper une ligne de commande gdb, ou simplement appuyer sur [Entrée] pour accepter sa valeur par défaut. À partir de là, il vous suffit de taper "démarrer" dans la fenêtre gdb avec tous les paramètres que vous voulez passer au programme que vous déboguez.

Après cela, vous êtes quasiment en or, mais avec une seule vue. Les menus en haut de l'écran sous "GUD" vous permettront d'ouvrir d'autres vues pertinentes pour tout ce que vous essayez de déboguer. (Les cadres sont des fenêtres séparées et "Windows" sont des fenêtres dans le cadre)

Habituellement, un point d'arrêt est défini au démarrage du programme, et vous pouvez ensuite naviguer dans votre code à l'aide des boutons en haut de la fenêtre, ou si vous n'avez pas de code, vous pouvez personnaliser votre vue pour vous permettre de procéder au démontage du binaire que vous regardez.

Les boutons en haut de la fenêtre entourés de "{} "sont pour le pas au niveau du code, et les boutons avec" <> "dans leur icône sont pour le débogage au niveau des instructions. Donc, vous voudrez probablement vous concentrer sur la gauche si vous faites du débogage de code normal, et vous concentrer davantage sur la droite si vous entrez dans le vif du sujet.

De plus, si jamais vous vous perdez, cette icône:

GUD info

C'est un livre entier qui peut probablement répondre à vos questions. La seule fois où il n'existera pas dans Emacs, c'est si vous êtes sur Debian (Ubuntu est bien) et avez installé Emacs à partir de ses dépôts. Dans ce cas, vous devrez installer " emacs<vesrsion>-common-non-dfsg " pour obtenir les manuels. (Avec " <version> " étant les chiffres non décimaux renvoyés par la version M-x dans Emacs)

C'est Spacemacs et non GNU Emacs, n'est-ce pas?
Nan. C'est tout simplement GNU Emacs, j'ai juste le mien stylé pour ressembler à ceci. Rien de ce que j'ai mentionné ci-dessus n'est spécifique à ma configuration. (Et en fait, Spacemacs n'est qu'un ensemble de configurations Emacs aussi, mais je n'ai aucune idée si cela change l'utilisation de GDB)
#4
+27
joxeankoret
2013-03-30 15:12:24 UTC
view on stackexchange narkive permalink

Mon opinion est un peu biaisée mais, pour l'assembleur de débogage, le meilleur «frontend» GDB qui existe est IDA (il prend en charge la communication avec des cibles GDB distantes). Pour le débogage du code source, cependant, je recommanderais KDBG.

Je recommanderais en fait d'utiliser `linux_server` d'IDA sur GDB distant, il est plus performant et plus rapide (car il utilise un protocole binaire et non basé sur du texte).
Veuillez justifier votre recommandation. Les réponses ne sont pas écrites uniquement pour le PO mais pour toutes les autres personnes qui pourraient rencontrer cela à l'avenir.
Fondamentalement parce que vous avez toute la puissance de l'IDA (plugins, scripts IDAPython, GUI connue, ...) et n'est pas seulement une interface pour GDB.
#5
+21
0xC0000022L
2013-04-02 05:58:50 UTC
view on stackexchange narkive permalink

Même au risque d'un vote défavorable sévère, je voudrais me ranger du côté de la vieille invite gdb et recommander de ne pas utiliser l'interface graphique. J'ai commencé par apprendre une utilisation plus avancée de GDB en lisant Art of Debugging il y a quelques années. Il décrit GDB et DDD ainsi qu'Eclipse comme des interfaces vers GDB.

Certes, la plupart du temps, j'utilise Vim comme IDE sur le terminal et tmux (précédemment écran avec byobu ). Par conséquent, je passe d'un volet à l'autre de mon multiplexeur de terminal pour basculer rapidement entre le code et le débogueur. L'invite GDB - après quelques semaines d'essai du TUI - a en effet tout ce que j'ai jamais souhaité et vous devez garder à l'esprit que vous pouvez vous attacher plusieurs fois au même processus (en jetant ainsi un œil à la mémoire comme vous la décrivez).

Il semble que toutes les interfaces sont un peu en retard - pas de surprise - et il est plus logique de se réconcilier avec l'invite GDB et ses subtilités et bizarreries. Gardez à l'esprit que sur une configuration en métal nu, c'est peut-être la seule chose que vous ayez. Il est donc logique de l'apprendre même si vous trouvez une interface graphique "décente" selon vos propres normes.

Les nouvelles versions de GDB prendront également en charge les scripts Python et fourniront ainsi un ensemble d'outils très puissants pour déboguer, même juste à partir de la ligne de commande.

Si vous insistez absolument pour utiliser une interface graphique, je recommanderais également IDA Pro pour la simple raison qu'il vous donne une seule interface pour une variété de débogueurs et que vous devez apprenez (ou personnalisez) ses raccourcis une seule fois. Inconvénients: prix et flexibilité lorsque vous n'avez pas de licence sur une machine particulière ou aucun moyen de tunnel vers un serveur GDB etc ...


Je n'ai connaissance d'aucune interface de GDB qui accepte les commandes WinDbg. Et je ne peux que le souligner à nouveau: vous récolterez de toute façon le fruit du temps investi dans l'apprentissage de la vanille GDB. N'ayez pas peur de l'effort. Il y a beaucoup de choses dans WinDbg qui sont spécifiques à la façon dont Windows fonctionne, le noyau Windows fonctionne, etc. GDB est beaucoup plus générique.

#6
+18
omghai2u
2013-03-30 07:39:53 UTC
view on stackexchange narkive permalink

Je voudrais suggérer DDD.

Si vous avez le code source, vous devriez consulter QTCreator. Son débogueur est similaire à celui de Visual Studio, si vous êtes familier avec cela.

J'ai utilisé `DDD` et je n'étais pas fan. Je vais vérifier QtCreator cependant, merci!
DDD est idéal pour afficher des structures de données, vous pouvez les disposer sur un tableau (une sorte de table lumineuse). D'où data-display-debugger.
DDD a l'air bizarre et obsolète à première vue, mais c'est vraiment puissant.
#7
+11
fG-
2013-04-01 19:42:21 UTC
view on stackexchange narkive permalink

Pas de GUI mais un bon remplacement une fois que vous vous y êtes habitué (et personnellement je pense que c'est plus rapide pour la plupart des choses) -> https://github.com/gdbinit/Gdbinit.

Je me suis souvenu du début de l'inversion de * nix et j'ai dû affronter gdb pour la première fois. Je l'ai détesté et + gdbinit de mammon original m'a sauvé la journée. De nos jours, je préfère gdb à la plupart des débogueurs d'interface graphique.

Essayez-le :-)

Divulgation complète: je suis l'auteur de l'outil.

Vous devriez écrire une divulgation que Gdbinit est un logiciel que vous maintenez ...
Donc? C'est gratuit, accessible à tous. Pas vraiment essayer de vendre quoi que ce soit ici. Décidément ...!
@fg- Cela peut encore être une publicité qui n'est pas basée sur l'expérience mais uniquement sur le fait que vous avez écrit cet outil.
Vous ne pouvez donc pas annoncer vos outils utiles qui résolvent des problèmes et devez attendre que les autres le fassent? C'est un mode de pensée vraiment étrange pour une "communauté" de solutionneur de problèmes.
@fG-, veuillez lire la FAQ: http://reverseengineering.stackexchange.com/faq#promotion
#8
+10
Mellowcandle
2013-03-30 12:42:53 UTC
view on stackexchange narkive permalink

Je n'aime pas vraiment DDD, c'est tellement 90 dans son interface graphique.

Je voudrais recommander KDBG, qui est une interface KDE pour gdb. Cgdb, qui est une extension curses pour gdb.

Dernièrement, je suis tombé sur Nemiver, cela semble vraiment prometteur.

KDBG fonctionne-t-il bien pour le démontage et le débogage sans source également? Leurs captures d'écran ne montraient que le code source.
Je ne sais pas, je n'ai jamais essayé avant ...
"c'est tellement 90 dans son interface graphique" ... plus comme des années 80
L'apparence de l'interface graphique est-elle le seul inconvénient?
#9
+7
jlhonora
2013-05-08 21:15:02 UTC
view on stackexchange narkive permalink

cgdb est également une excellente option si vous utilisez Vim.

cgdb partage beaucoup de commandes avec vim, comme la recherche regex et bien d'autres. Depuis la page d'accueil de cgdb:

L'interface clavier est calquée sur vim, les utilisateurs de vim devraient donc se sentir chez eux en utilisant cgdb.

#10
+5
Runium
2013-06-22 04:54:49 UTC
view on stackexchange narkive permalink

J'utilise habituellement Vim + gdb en mode CLI lors du codage, etc. Mais parfois, une interface graphique est préférable.

Une autre option, à côté de celles mentionnées, est Code :: Blocks. Il utilise GDB et CDB comme back-end. Pour GDB, vous pouvez sélectionner AT&T, Intel ou personnalisé pour le démontage. Il prend en charge le mode mixte ainsi que la liste d'instructions pures. Vous pouvez en outre le configurer pour évaluer les variables (dans le code) sous le curseur, etc.

Il n'y a qu'une seule fenêtre de vidage de la mémoire, mais vous pouvez également entrer des commandes GDB brutes dans Ligne de commande en bas qui est imprimée dans la fenêtre - par exemple les vidages de mémoire.

Il a une fenêtre séparée pour les registres du CPU, ils ne sont pas directement modifiables, mais vous pouvez définir des valeurs par la ligne de commande mentionnée, ainsi que d'autres valeurs:

  set $ eax = 123set var xyz = 'q'  

L'image ci-dessous le montre en action avec le débogage des sources sur un KVM (Ouvrez le lien pour l'afficher en plus grand format).

Un problème que j'ai eu avec elle est quelques bogues d'interface graphique, etc. Mais une compilation et une installation de la version actuelle, 12.11, se sont déroulées sans problème.

Par exemple pour l'installation du chemin d'installation personnalisé (si votre distribution n'a pas de version à jour et que vous voulez avoir les deux):

  - Télécharger (SVN ou version) .- Décompresser.- ./configure - -exec-prefix = / blahblah / codeblocks --prefix = / blahblah / codeblocks- make- sudo make install 2>&1 | tee mon_install.log  

Code::Blocks with GDB

#11
+4
R.Chatsiri
2013-06-26 09:21:51 UTC
view on stackexchange narkive permalink

Cet article de Dr Dobbs montre en détail les interfaces graphiques pour le débogage sous Linux OS. Je recommande le Qt-Creator appelé débogage GDB basé sur l'environnement Linux. Quoi qu'il en soit, l'article ne passe en revue que le débogage du code C ++, mais cela suffit pour montrer les fonctionnalités de débogage de GDB.

#12
+3
Xiao Ming
2015-06-12 05:12:53 UTC
view on stackexchange narkive permalink

Je recommanderai UltraGDB, qui est l'interface graphique GDB et l'IDE léger basé sur la technologie Eclipse.

#13
+3
0xec
2015-06-12 21:11:55 UTC
view on stackexchange narkive permalink

Il existe une interface graphique Affnic Debugger. Ce n'est pas gratuit mais une version allégée existe. Il est disponible pour Windows, Linux & MacOS.

Depuis le site officiel,

Affinic Debugger GUI .aka. ADG, est conçu comme une interface utilisateur graphique pour divers débogueurs. Cette version est spécifiquement ciblée sur GDB, le débogueur GNU. Avec les fenêtres graphiques, ADG peut libérer toute la puissance des débogueurs en affichant plusieurs types d'informations dans une seule vue et en manœuvrant les débogueurs en cliquant facilement. ADG fournit également un terminal de commande intégré permettant aux utilisateurs de saisir directement la commande du débogueur. ADG est disponible sur Linux / Windows / Mac OS X.

#14
+3
Sergiy Migdalskiy
2018-02-10 08:31:58 UTC
view on stackexchange narkive permalink

VisualStudio.Code ( VS.Code) fonctionne sous Linux et possède une extension "Native Debug" qui vous permet d'utiliser gdb. Il a une interface utilisateur très réactive. C'est extrêmement léger sur les ressources. L'expérience se rapproche quelque peu de Visual Studio sur Windows pour les développeurs C ++ (il n'y a cependant pas de vue d'assembly). Les principaux raccourcis de débogage sont les mêmes prêts à l'emploi (F5, Shift-F5, F10, F11).

L'installation se fait en deux clics (l'un pour installer VS.Code, l'autre pour installer l'extension) , idéal pour quelqu'un qui vient de Windows Visual Studio et qui cherche à être productif tout de suite.

#15
+2
atdre
2016-09-05 01:57:32 UTC
view on stackexchange narkive permalink

Il existe Voltron, qui est une interface utilisateur de débogage Python extensible qui prend en charge LLDB, GDB, VDB et WinDbg / CDB (via PyKD) et fonctionne sous macOS, Linux et Windows. Pour les trois premiers, il prend en charge x86, x86_64 et arm avec même le support arm64 pour lldb tout en ajoutant même le support powerpc pour gdb.

L'auteur a également écrit un plugin Binary Ninja pour intégrer Voltron - https : //github.com/snare/binjatron - qui permet des vues synchronisées.

#16
+2
BullyWiiPlaza
2017-01-17 14:39:06 UTC
view on stackexchange narkive permalink

Notez que ce qui suit s'applique uniquement au débogage du code source.

CLion est un IDE utilisant gdb . Vous avez toujours la possibilité de taper des commandes, mais de nombreuses fonctionnalités sont implémentées de manière transparente dans l'interface graphique, telles que la progression, la visualisation des variables actuellement actives et la définition de points d'arrêt . En savoir plus ici .

#17
+1
Oğuzhan Eroğlu
2020-01-22 20:43:11 UTC
view on stackexchange narkive permalink

Vous pouvez utiliser GDBFrontend. C'est un frontend GDB très piratable.

Divulgation complète: je suis le développeur.



Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...