Je venais juste de déboguer un programme dans gdb et j'ai trouvé une nouvelle fonctionnalité que je n'avais jamais vue ni même entendue auparavant, une vue fractionnée où je peux voir et parcourir le code en plus de donner des commandes:
Qu'est-ce que c'est? Qu'est-ce que j'ai fait ou, plus précisément, comment puis-je obtenir à nouveau ce mode d'écran partagé? Y a-t-il un nom pour ce mode, ou un endroit où je peux lire comment l'utiliser?
Réponses:
Ça s'appelle le TUI (sans blague). Commencez par exemple avec
gdbtui
ougdb -tui
...la source
layout next
après avoir commencégdb
normalementVous pouvez le déclencher dynamiquement par push ctrl+ xet ctrl+ a.
la source
Il en existe deux variantes.
Appuyez
CTRL
X
ensemble puis1
Appuyez simultanément sur 'CTRL' 'X' puis sur '2'
http://www.cs.fsu.edu/~baker/ada/gnat/html/gdb_23.html
Une capture d'écran de la vue avec le code et l'assemblage.
Découvrez également cet incroyable projet Github.
la source
Vous pouvez également le démarrer à partir du shell gdb en utilisant la commande "-" (tiret). Je ne sais pas comment le désactiver dynamiquement.
la source
Tableau de bord GDB
https://github.com/cyrus-and/gdb-dashboard
Le tableau de bord GDB utilise l' API GDB Python officielle et imprime les informations que vous souhaitez lorsque GDB s'arrête, par exemple après un
next
, comme ladisplay
commande native .Vs TUI:
plus robuste, car il imprime simplement sur stdout au lieu de mettre le shell sur un état de malédictions plus magiques, par exemple:
vi
mode en.inputrc
provoque des problèmes: /superuser/180512/how-to-turn-off-gdb-tui/927728#927728hautement configurable à partir de Python: vous pouvez sélectionner ce que vous voulez sortir et la taille de chaque section en fonction de ce que vous déboguez.
Les vues les plus utiles sont déjà implémentées: source, assemblage, registres, pile, mémoire, threads, expressions ... mais il devrait être facile de l'étendre avec toutes les informations exposées sur l'API GDB Python.
TUI ne permet d'afficher que deux des sources, l'assemblage et les registres et c'est tout. A moins que vous ne vouliez modifier son code source C bien sûr ;-)
Je pense que GDB devrait être livré avec une configuration comme celle-ci prête à l'emploi et activée par défaut, cela attirerait beaucoup plus d'utilisateurs de cette façon.
Oh, et le développeur principal, Andrea Cardaci , a été très réactif et génial. Bravo.
Voir aussi: Comment mettre en évidence et colorer la sortie gdb pendant le débogage interactif?
la source
Tapez
layout
comme une commande dans gdb et la fenêtre fractionnée sera affichée.la source
Lorsque GDB est en mode standard, l'utilisation
win
passera automatiquement en mode TUI.Autre commande pour le mode TUI:
info win
Liste et donne la taille de toutes les fenêtres affichées.
focus next | prev | src | asm | regs | split
Définissez le focus sur la fenêtre nommée. Cette commande permet de changer la fenêtre active afin que les touches de défilement puissent être affectées à une autre fenêtre.
Lisez ici pour plus d'aide.
la source
Il existe également un outil d'interface pour GDB appelé cgdb. Même avec un peu de mise en évidence des couleurs. "ESC" pour passer à la vue code, "i" pour revenir à gdb
la source
Le mode tui a été clairement inspiré par emacs - je l'ai découvert par accident quand j'ai frappé ^ Xo, qui bascule entre les fenêtres fractionnées dans emacs - je le frappe parfois distraitement quand ce que je devrais faire est de passer à un programme différent. Quoi qu'il en soit, cela conduit à une autre fonctionnalité non encore mentionnée, que vous pouvez déplacer le curseur de la fenêtre de code (où vous pouvez faire défiler) vers la ligne de commande, ou vice versa, avec ^ Xo.
la source