Подтвердить что ты не робот

Как прокручивать назад в окне команд 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 (если это имеет какое-то значение).

4b9b3361

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