Как я могу прокрутить назад в командном окне 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
используя это, вы можете изменить активное окно, а затем использовать нормальную стрелку вверх вниз, чтобы увидеть предыдущие команды.