web-dev-qa-db-fra.com

Comment revenir en arrière dans la fenêtre de commande de GDB en mode TUI?

Supposer que

(gdb) print *this

résulté en 20 lignes de sortie. Oui, il y aurait Type <return> to continue, or q <return> to quit, mais j'aimerais revenir en haut après avoir atteint le bas de la sortie.

Je ne pense pas http://sourceware.org/gdb/onlinedocs/gdb/TUI-Keys.html répond à ma question. Il est dit

<PgUp>
Faites défiler la fenêtre active d'une page vers le haut.

mais lorsque l'accent est mis sur la fenêtre de commande, PgUp rembobine l'historique des commandes, au lieu de revenir en arrière dans la fenêtre de commande. Est-ce seulement moi qui souffre de ce comportement?

J'utilise PuTTY pour SSH vers Red Hat Linux (si cela fait une différence).

43
nodakai

Une façon de voir l'historique des sorties GDB en mode TUI est d'activer la journalisation:

set trace-commands on
set logging on

puis réduisez le journal dans un autre shell:

cd where/gdb/is/running
tail -f gdb.txt

Cela a l'avantage de séparer le défilement de l'interaction des commandes, de sorte que vous pouvez taper des commandes tout en affichant une section antérieure de la sortie GDB.

Aucune des touches de défilement ne fonctionne dans ma fenêtre CMD, donc GDB consomme et détruit efficacement sa propre sortie. La sortie du mode TUI me permet de faire défiler vers le haut, mais la sortie qui s'est produite en mode TUI n'est pas là - la fenêtre non-TUI affiche uniquement la nouvelle sortie générée après la sortie du mode TUI. Jusqu'à présent, log and tail est la seule solution que je puisse trouver.


Modifier: si vous activez la journalisation GDB (via set logging on) avant de passer en mode TUI, vous pouvez constater que la journalisation s'arrête en entrant dans TUI (il s'agit d'un bogue dans GDB). Vous pouvez le réactiver:

set logging off
set logging on
32
Byron Hawkins

J'ai trouvé une réponse ici: http://beej.us/guide/bggdb/

Notez que lorsque la fenêtre SRC est active, les touches fléchées déplacent le code source, mais lorsque la fenêtre CMD est active, les touches fléchées sélectionnent les commandes précédente et suivante dans l'historique des commandes. (Pour mémoire, les commandes pour déplacer les lignes et les pages uniques de la fenêtre SRC sont +, -, <et>.)

Il existe également un exemple de session illustrant ceci:

(gdb) info win
        SRC     (36 lines)  <has focus>
        CMD     (18 lines)
(gdb) fs next
Focus set to CMD window.
(gdb) info win
        SRC     (36 lines)
        CMD     (18 lines)  <has focus>
(gdb) fs SRC
Focus set to SRC window.
(gdb)
45
Lupus

Tu peux essayer CtrlP pour la commande précédente et CtrlN pour la commande next (lorsque vous avez utilisé CtrlP pour revenir aux commandes précédentes :)

11
Rohan Ghige

Utilisation C-x o (d'habitude CtrlXO). En utilisant cela, vous pouvez changer votre fenêtre active, puis utiliser la flèche normale haut/bas pour voir les commandes précédentes.

5
EmptyData