Как записать весь сеанс GDB в файл, включая вводимые мной команды и их вывод? - PullRequest
18 голосов
/ 10 ноября 2009

В bash я могу использовать команду script, которая выводит в файл все, что показано на оболочке, включая:

  • набранные команды
  • PS1 линия
  • стандартный вывод и стандартный вывод команд

Что такое эквивалент в GDB?

Я пытался запустить shell script изнутри GDB, но после нажатия кнопки возврата я оказался в оболочке и потерял приглашение оболочки и больше не мог выполнять команду. Более того, я не мог использовать Ctrl + C или Ctrl + \ для выхода. Мне нужно было заставить убить /bin/login tty2, чтобы выйти.

Ответы [ 3 ]

32 голосов
/ 10 ноября 2009

Если вы хотите зарегистрировать вывод GDB, вы можете использовать команды вывода записи GDB , например.

set logging file mylog.txt
set logging on

Если вы хотите перенаправить вывод вашей программы в файл, вы можете использовать перенаправление, например.

run myprog > mylog.txt

см. Главу о программном вводе-выводе в руководстве по GDB для получения дополнительной информации

2 голосов
/ 20 марта 2012
  • Создайте текстовый файл, т.е. gdbCommands.txt, с помощью следующих команд

set logging on my_log_file\nbt 10\nq

bt 10, указывает количество строк (вызовов функций), которое нам нужно от обратного следа, в нашем примере это 10 строк.

  • Выполните GDB, используя следующую команду, предполагая, что файл дампа памяти core.2345

gdb -x gdbCommands.txt myApp core.2345

  • Открыть my_log_file и проверить трассировку!

МЕТОДИЧЕСКАЯ переадресация-GDB-трассировка-выход к-а-текстового файл

0 голосов
/ 10 ноября 2009

Посмотрите документацию GDB. Поиск "Консервированные последовательности команд". Существует способ сохранить команды GDB в файле и запустить их с помощью команды source, и вы можете использовать некоторые команды GDB в этих сценариях для печати информации, доступной для GDB (например, echo, output и printf) .

Если вы хотите этот вывод в файле, используйте set logging file FILE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...