web-dev-qa-db-fra.com

gdb split view avec code

Je venais juste de déboguer un programme dans gdb et d'une manière ou d'une autre, j'ai trouvé une nouvelle fonctionnalité que je n'avais jamais vue ou même entendue auparavant, une vue partagée permettant de voir et de parcourir le code en plus de donner des commandes:

Sorry about the picture, but ttys don't have screenshots.

Qu'est-ce que c'est? Qu'est-ce que j'ai fait ou, plus précisément, comment puis-je retrouver ce mode écran partagé? Existe-t-il un nom pour ce mode ou un endroit où je peux lire comment l’utiliser?

83
Kevin

C'est ce qu'on appelle le TUI (sans blague). Commencez par exemple avec gdbtui ou gdb -tui ...

72
0xC0000022L

Vous pouvez le déclencher dynamiquement par Push ctrl+x et ctrl+a.

75
POHAN WU

Il en existe deux variantes.

  1. pour ne voir que le code Appuyez sur 

Appuyez sur CTRLX ensemble puis sur 1

  1. Pour voir à la fois la source et l'Assemblée 

Appuyez sur 'CTRL' 'X' ensemble 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 .enter image description here

Consultez également cet incroyable projet Github.

31
abhi

Vous pouvez également le démarrer à partir du shell gdb à l’aide de la commande "-" (tiret). Vous ne savez pas comment l'éteindre de manière dynamique.

12
Neowizard

Tapez layout comme commande dans gdb et la fenêtre scindée sera affichée.

10
alfred

Tableau de bord GDB

https://github.com/cyrus-and/gdb-dashboard

Le tableau de bord GDB utilise l’API GDB Python et imprime les informations souhaitées lorsque GDB s’arrête, par exemple. après une next, comme la commande native display .

Vs TUI:

  • plus robuste, car il ne place pas le shell dans un état plus magique, par exemple:

  • hautement configurable à partir de Python: vous pouvez sélectionner ce que vous voulez afficher et quelle est 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, Assembly, registres, pile, mémoire, threads, expressions ... mais il devrait être facile de l'étendre avec toutes les informations exposées sur l'API Python GDB.

    TUI permet uniquement d’afficher deux sources, Assembly et registres, et c’est tout. Sauf si vous voulez modifier son code source C bien sûr ;-)

 enter image description here

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.

Voir aussi: Comment mettre en évidence et colorer la sortie gdb lors du débogage interactif?

Lorsque GDB est en mode standard, utiliser win basculera automatiquement en mode TUI.
Autre commande pour le mode TUI:

  • info win
    Répertorie 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 forme plus d'aide.

5
girardengo

le mode tui a été clairement inspiré par emacs - je l’ai découvert par hasard lorsque j’ai appuyé sur ^ X-o, qui bascule entre fenêtres divisées dans emacs - j’ai parfois trouvé cela distraitement alors que je devais être en train de changer de programme. Quoi qu'il en soit, cela conduit à une autre fonctionnalité non encore mentionnée, à savoir 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 inversement, avec ^ X-o.

1
Blob

Il existe également un outil d'interface pour GDB appelé cgdb. Même avec certaines couleurs surlignées . "ESC" pour passer en mode code, "i" pour revenir à gdb

 cgdb

0
user3042599