Как я могу прокрутить обратно в командном окне GDB в режиме TUI? - PullRequest
39 голосов
/ 13 февраля 2012

Предположим, что

(gdb) print *this

привело к 20 строкам вывода.Да, было бы Type <return> to continue, or q <return> to quit, но я бы хотел прокрутить назад до вершины после того, как я дошел до нижней части вывода.

Я не думаю, что http://sourceware.org/gdb/onlinedocs/gdb/TUI-Keys.html отвечает на мой вопрос,В нем говорится:


Прокрутить активное окно на одну страницу вверх.

, но когда фокус находится на окне команд, PgUp перематывает историю команд вместо прокрутки назад в окне команд.Только я страдаю от этого поведения?

Я использую PuTTY для SSH к Red Hat Linux (если это что-то меняет).

Ответы [ 4 ]

41 голосов
/ 30 августа 2012

Я нашел ответ здесь: http://beej.us/guide/bggdb/

Обратите внимание, что, когда окно SRC имеет фокус, клавиши со стрелками будут перемещать исходный код, но когда окно CMD имеет фокус, клавиши со стрелками будут выбирать предыдущую и следующую команды в истории команд. (Для записи, команды для перемещения одиночных строк и отдельных страниц окна SRC +, -, <и>.)

Есть также пример сеанса, иллюстрирующий это:

(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)
30 голосов
/ 14 сентября 2012

Один из способов просмотра истории вывода GDB в режиме TUI - включить ведение журнала:

set trace-commands on
set logging on

и затем добавьте журнал в другую оболочку:

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

Преимущество заключается в том, что вы отделяете прокрутку от командного взаимодействия, так что вы можете вводить команды, просматривая какой-то предыдущий раздел вывода GDB.

Ни одна из клавиш прокрутки не работает в моем окне CMD, поэтому GDB эффективно использует и уничтожает свой собственный вывод. Переключение из режима TUI позволяет мне прокручивать вверх, но вывод, который произошел в режиме TUI, отсутствует - в окне без TUI отображаются только новые выходные данные, созданные после переключения из режима TUI. Пока что бревно и хвост - единственное решение, которое я могу найти.


Редактировать: если вы активируете ведение журнала GDB (через set logging on) перед переключением в режим TUI, вы можете обнаружить, что ведение журнала останавливается при вводе TUI (это ошибка в GDB). Вы можете включить его обратно:

set logging off
set logging on
10 голосов
/ 24 мая 2017

Вы можете попробовать Ctrl + P для предыдущей команды и Ctrl + N для следующая команда (когда вы использовали Ctrl + P , чтобы вернуться к предыдущим командам:)

3 голосов
/ 28 мая 2018

Используйте C-x o (обычно Ctrl + X , O ).Используя это, вы можете изменить свое активное окно, а затем использовать обычную стрелку вверх для просмотра предыдущих команд.

...