Как я могу прокрутить назад в командном окне GDB в режиме TUI?

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

(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 для RHEL (если это имеет какие-либо различия.)

4 ответов


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

set trace-commands on
set logging on

а затем хвост журнала в другой оболочке:

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

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

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


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

set logging off
set logging on

Я нашел ответ здесь: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)

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


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