ГДБ печать в файл вместо стандартного вывода


Я запускаю gdb и хочу изучить один из этих несчастных объектов Бога. Это занимает много страниц (и у меня есть 24-дюймовый монитор, повернутый боком!) чтобы увидеть все это. Для удобства использования я хотел бы, чтобы gdb печатал объект в файл вместо экрана, чтобы я мог открыть его в vi и легко перемещаться. При всей универсальности gdb, должен быть способ сделать это, не так ли?

5 78

5 ответов:

вы должны включить ведение журнала.

(gdb) set logging on

вы можете сказать, какой файл использовать.

(gdb) set logging file my_god_object.log

и вы можете проверить текущие конфигурации.

(gdb) show logging

я обнаружил, что вы можете перенаправить вывод из gdb в файл через :

(gdb) run > outfile

расширение на ответ @qubodup

gdb core.3599 -ex bt -ex quit |& tee backtrace.log

the -ex коммутатор выполняет команду gdb. Так что выше загружает основной файл, работает , потом . Вывод записывается в backtrace.log, а также на экране.

еще один полезный вызов gdb (дающий stacktrace с локальными переменными из всех потоков) -

gdb core.3599 -ex 'thread apply all bt full' -ex quit

вы можете сохранить вывод команд gdb в файл. Существует несколько команд для управления журналированием gdb.

set logging on

включить ведение журнала.

set logging off

отключить ведение журнала.

set logging file file

изменить имя текущего файла журнала. Файл журнала по умолчанию ГДБ.формат txt.

set logging overwrite [on|off]

по умолчанию gdb будет добавляться в файл журнала. Установите перезапись, если вы хотите установить вход в систему для перезаписи файла журнала вместо этого.

set logging redirect [on|off]

по умолчанию, вывод gdb будет идти как в терминал, так и в файл журнала. Установите перенаправление, если вы хотите, чтобы вывод шел только в файл журнала.

show logging

показать текущие значения параметров ведения журнала.

простой способ войти gdb в файл, все еще видя вывод (что облегчает написание команд), заключается в использовании tee:

gdb command |& tee gdb.log