Lapprentissage des commandes GDB est sur ma liste de seaux, 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 dune zone tout en marchant, de définir la saveur de désassemblage et davoir une fenêtre avec des registres qui ont des valeurs modifiables?

Commentaires

Réponse

Jai créé mon propre frontend gdb appelé gdbgui qui est un serveur (en python) qui vous permet daccéder à un frontend complet dans votre navigateur .

Capture décran de gdbgui

Installer

pip install gdbgui --upgrade 

ou téléchargez 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 vous r navigateur ouvrira un nouvel onglet.

Fonctionnalités

  • définir / supprimer des points darrêt
  • afficher le code source, avec le code machine en ligne facultatif
  • sélectionner le cadre actuel 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 commandes gdb traditionnelles, et afficher la sortie du programme gdb / inferior
  • mise en page inspirée de lincroyable débogueur Chrome
  • compatible avec le RR de Mozilla, pour le débogage inversé

Commentaires

  • Cest vraiment du bon travail. La conception va au cœur du cas dutilisation moyen. Je laime bien. Il prend également en charge le débogage à distance (ou, plutôt, il prend en charge lutilisation de la commande target remote host:port gdb. Bien fait. Peut-être que lajout de la possibilité de se connecter à un hôte distant dans le menu serait un bon ajout -on. Serait-il possible de réduire la taille de ‘ register`? Toutes les informations sont disponibles, mais (au moins sur ARM) vous pouvez ‘ Vous ne voyez pas tous les registres à la fois, vous devez donc faire défiler.
  • Les commentaires ici ne sont pas destinés au support individuel gdbgui. Veuillez ouvrir un nouveau question sur sx, ou utilisez les canaux de support / bogue de gdbgui.

Réponse

Bien que certaines personnes ne le font pas  » t prendre soin de son interface, il « vaut la peine de mentionner que GDB a 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

Réponse

Jai généralement utilisé Emacs GUD comme interface GDB.

Prise en charge de GDB dans Emacs

Il nest pas trop difficile à utiliser, vous permet de définir des points darrêt visuellement (ou via la fenêtre GDB si vous préférez).

Elle a plusieurs vues différentes auxquelles vous pouvez accéder à partir dun menu GDB de niveau supérieur:

Vues GUD

Il permet également des subtilités comme vous permettre dinspecter les valeurs en passant la souris dessus:

Valeurs de survol de la souris

Pour lutiliser, vous devez dabord accéder à le dossier de votre binaire avec C-x C-f, puis M-x gdb (That « s » Alt + X  » , puis en tapant « gdb« ). Après cela, vous pouvez taper une ligne de commande gdb ou simplement appuyer sur [Enter] pour accepter sa valeur par défaut. À partir de là, il vous suffit de taper « start » 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 douvrir dautres 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 darrêt est défini au démarrage du programme, et vous pouvez ensuite naviguer dans votre code en utilisant les boutons en haut de la fenêtre, ou si vous navez 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

Cest un livre entier qui peut probablement répondre à vos questions. Le seul moment où il nexistera pas dans Emacs, cest 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 M-x version dans Emacs)

Commentaires

  • Ceci est Spacemacs et non GNU Emacs, nest-ce pas?
  • Non. Cest clair ‘ ol GNU Emacs, jai juste le style du mien pour ressembler à ceci. Rien de ce que jai mentionné ci-dessus nest spécifique à ma configuration. (Et en fait, Spacemacs est juste un ensemble de configurations Emacs aussi, mais je nai aucune idée si cela change lutilisation de GDB)
  • Que ‘ ne stocke pas Emacs. Quels OS et packages utilisez-vous?
  • Il semble que le package Power Line soit installé parmi autres choses. emacswiki.org/emacs/PowerLine
  • @mrbean Ceci sur Linux Mint et oui, je pense que mon thème Emacs en 2013 était base16-demain avec PowerLine (belle reconnaissance dailleurs!)

Answer

Mon avis est un peu biaisé mais, pour lassembleur 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.

Commentaires

  • Je recommanderais en fait dutiliser IDA ‘ s linux_server sur GDB distant, il ‘ est plus performant et plus rapide (car il utilise un protocole binaire et non textuel ).
  • Veuillez justifier votre recommandation. Les réponses sont écrites non seulement pour lOP mais pour toutes les autres personnes qui pourraient rencontrer cela à lavenir.
  • Fondamentalement, parce que vous avez toute la puissance de lIDA (plugins, scripts IDAPython, interface graphique connue,. ..) et nest pas seulement une interface pour GDB.

Réponse

Même au risque dun vote défavorable sévère , Je « voudrais me ranger du côté de la vieille invite gdb et recommander de ne pas utiliser linterface graphique. Jai commencé par apprendre à utiliser GDB plus en détail en lisant Art of Debugging il y a quelques années. Il décrit GDB et DDD ainsi quEclipse comme des interfaces vers GDB.

Certes, la plupart du temps, jutilise Vim comme IDE sur le terminal et tmux (plus tôt screen avec byobu). Par conséquent, je passe dun volet à lautre dans 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 tout ce que jai toujours souhaité et vous devez garder à lesprit que vous pouvez vous attacher plusieurs fois au même processus (en jetant ainsi un œil à la mémoire comme vous le décrivez).

Il semble que toutes les interfaces sont à la traîne un peu – pas de surprise – et il est plus logique de se réconcilier avec linvite GDB et ses subtilités et bizarreries. Gardez à lesprit que sur une configuration en métal nu, cest peut-être la seule chose que vous ayez. Il est donc logique de lapprendre 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 doutils 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 quil 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 navez pas de licence sur une machine particulière ou aucun moyen de tunneler vers un serveur GDB etc …


Je ne connais 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 lapprentissage de la vanille GDB. Nayez pas peur de leffort. Il y a beaucoup de choses dans WinDbg qui sont spécifiques à la façon dont Windows fonctionne, le noyau Windows fonctionne et ainsi de suite. GDB est beaucoup plus générique.

Réponse

Je « voudrais suggérer DDD .

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

Commentaires

  • I ‘ jai utilisé DDD et je nai pas été ‘ fan. Je ‘ Je vais vérifier QtCreator, merci!
  • DDD est idéal pour afficher des structures de données, vous pouvez les disposer sur un tableau (une sorte de table lumineuse ). Doù le débogueur daffichage des données.
  • DDD semble étrange et obsolète à première vue, mais il est ‘ vraiment puissant.

Réponse

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

Je me suis souvenu quand jai commencé linversion de * nix et javais pour faire face à gdb pour la première fois. Je lai détesté et le gdbinit de + mammon original a sauvé ma journée. Aujourdhui, je préfère gdb à la plupart des débogueurs GUI.

Essayez-le 🙂

Divulgation complète: je suis lauteur de loutil.

Commentaires

  • Vous devriez écrire une divulgation indiquant que Gdbinit est un logiciel que vous ‘ maintenez …
  • Alors? Il ‘ est gratuit, accessible à tous. Je nessaye pas exactement de vendre quoi que ce soit ici. Décidément …!
  • @ fg- Cela pourrait encore être une publicité qui nest pas basée sur lexpérience mais uniquement sur le fait que vous avez écrit cet outil.
  • Vous pouvez donc ‘ t annoncer vos outils utiles qui résolvent des problèmes et devez attendre que dautres le fassent? Ce ‘ est un mode de pensée vraiment étrange pour un résolveur de problèmes  » communauté « .
  • @ fG- veuillez lire la FAQ: reverseengineering.stackexchange.com/faq#promotion

Réponse

Je naime pas vraiment DDD, cest tellement 90 « dans son interface graphique.

Je voudrais je recommande KDBG, qui est une interface KDE pour gdb. En outre, vous voudrez peut-être jeter un oeil à Cgdb, qui est une extension malédictions pour gdb.

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

Commentaires

  • KDBG fonctionne-t-il également bien pour le démontage et le débogage sans source? Leurs captures décran ne montraient que le code source.
  • Je ne ‘ je ne sais pas, je ne lai jamais essayé auparavant …
  •  » il ‘ est donc 90 ‘ y est ‘ s GUI  » … plutôt 80 ‘ s
  • Lapparence de linterface graphique est-elle le seul inconvénient?

La réponse

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

cgdb partage beaucoup de commandes avec vim, telles que la recherche regex et bien dautres. Depuis la page daccueil de cgdb:

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

Réponse

Jutilise 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 dinstructions pures. Vous pouvez en outre le configurer pour évaluer les variables (dans le code) sous le curseur, etc.

Il ny a quune 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 processeur, ils ne sont pas directement modifiables, mais vous pouvez définir des valeurs par la ligne de commande mentionnée, ainsi que dautres valeurs:

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

Limage ci-dessous le montre en action avec le débogage des sources sur un KVM (Ouvrez le lien pour lafficher dans un format plus grand).

Un problème que jai eu avec elle est quelques bogues dinterface graphique, etc. quand je lexécute sur Ubuntu 12 – UB 12 a la version 10.10. Mais une compilation et une installation de la version actuelle , 12.11, se sont déroulées sans problème.

Par exemple. pour linstallation du chemin dinstallation personnalisé (si votre distribution na pas de version à jour et que vous voulez avoir les deux):

- Download (SVN or release). - Unpack. - ./configure --exec-prefix=/blahblah/codeblocks --prefix=/blahblah/codeblocks - make - sudo make install 2>&1 | tee my_install.log 

Code :: Blocs avec GDB

Réponse

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 lenvironnement Linux.Quoi quil en soit, larticle ne passe en revue que le débogage du code C ++, mais cela suffit pour montrer les fonctionnalités de débogage de GDB.

Réponse

Je recommanderai UltraGDB , qui est linterface graphique de GDB et lEDI léger basé sur la technologie Eclipse.

Réponse

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

Sur le site officiel,

Interface graphique Affinic Debugger .aka. ADG, est conçue 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 dinformations dans une vue et manœuvrer les débogueurs en cliquant facilement. ADG fournit également un terminal de commande intégré permettant aux utilisateurs de saisir directement les commandes du débogueur. ADG est disponible sur Linux / Windows / Mac OS X.

Réponse

VisualStudio.Code ( VS.Code ) fonctionne sous Linux et a une extension « Native Debug » qui vous permet dutiliser gdb. Il a une interface utilisateur très réactive. Il est extrêmement léger en ressources. Lexpérience se rapproche quelque peu de Visual Studio sur Windows pour les développeurs C ++ (il ny a pas de vue dassemblage cependant). Les principaux raccourcis de débogage sont les mêmes prêts à lemploi (F5, Shift-F5, F10, F11).

Linstallation se fait en deux clics (lun pour installer VS.Code, lautre pour installer lextension), idéal pour quelquun venant de Windows Visual Studio et qui cherche à être productif tout de suite.

Réponse

Il existe Voltron , qui est une interface utilisateur de débogage Python extensible prenant 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.

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

Réponse

Notez que ce qui suit sapplique 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 linterface graphique, telles que la progression, la visualisation des variables actuellement actives et la configuration de breakpoints. En savoir plus here .

Réponse

Vous pouvez utiliser GDBFrontend . Cest une interface GDB très piratable.

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

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *