Как я могу заставить gdb сохранить историю команд?

Как настроить gdb так, чтобы он сохранял историю команд? При запуске нового сеанса gdb я хотел бы использовать клавиши со стрелками для доступа к командам предыдущих сеансов.

Ответ 1

Короткий ответ: echo 'set history save on' >> ~/.gdbinit && chmod 600 ~/.gdbinit


Длинный ответ:

История команд приведена в руководстве GDB, 22.3 История команд. Создайте файл $HOME/.gdbinit, измените его разрешения на 0600 и добавьте следующий контент:

set history save on

Вы можете установить количество прошлых команд, сохраненных в следующем. Команда описывается как "Задайте количество команд, которые gdb хранит в своем списке хронологии. Это значение по умолчанию соответствует значению переменной среды GDBHISTSIZE или 256, если эта переменная не установлена. Нечисловые значения GDBHISTSIZE игнорируются. размер неограничен или если GDBHISTSIZE является либо отрицательным числом, либо пустой строкой, то количество команд gdb хранится в списке хронологии неограниченно".

set history size <size>

Связанная команда set history remove-duplicates <count>. Команда описана как "Управлять удалением повторяющихся записей истории в списке истории команд. Если счетчик не равен нулю, gdb будет оглядываться на последние записи статистики счета и удалять первую запись, которая является дубликатом текущей записи, являющейся добавлен в список истории команд. Если счетчик не ограничен, этот lookbehind неограничен. Если count равен 0, удаление дубликатов записей истории отключено".

set history remove-duplicates <count>

По умолчанию gdb сохраняет историю в файле. /.gdb_history в текущем каталоге. Если вы хотите, чтобы ваша история команд не зависела от того каталога, в котором вы находитесь, также укажите:

set history filename ~/.gdb_history

Ответ 2

Если у вас все еще есть проблемы, убедитесь, что ваша переменная среды HISTSIZE является достаточно большим числом. Шахта была пуста, в результате чего размер "истории" gdb по умолчанию равен 0.

Добавлено

export HISTSIZE=100000000

для моего ~/.bashrc и все набухает

Вы можете проверить свои настройки истории gdb, выполнив (внутри gdb) "показать историю":

gdb$ show history
expansion:  History expansion on command input is off.
filename:  The filename in which to record the command history is "/home/xiao/.gdb_history".
save:  Saving of the history record on exit is on.
size:  The size of the command history is 100000000.

Из docs:

установить размер файла истории
установить неограниченный размер истории
Задайте количество команд, которые GDB хранит в своем списке истории. По умолчанию это значение переменной среды HISTSIZE или 256, если эта переменная не установлена. Если размер не ограничен, количество команд GDB хранится в списке истории неограниченно.