Как прокручивать назад в окне команд 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>
Прокрутите активное окно на одну страницу вверх.
но когда фокус находится на командном окне, PgUp перематывает историю команд вместо прокрутки назад в командном окне. Только я страдаю от этого поведения?
Я использую PuTTY, чтобы использовать SSH для Red Hat Linux (если это имеет какое-то значение).
Ответы
Ответ 1
Один из способов увидеть историю вывода 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
Ответ 2
Я нашел ответ здесь: 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)
Ответ 3
Вы можете попробовать Ctrl + P для предыдущей команды и Ctrl + N для следующей команды (когда вы использовали Ctrl + P, чтобы вернуться к предыдущим командам :)
Ответ 4
Используйте Cx o
(обычно Ctrl + X, O). Используя это, вы можете изменить свое активное окно, а затем использовать обычную стрелку вверх, чтобы увидеть предыдущие команды.