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

Как сбрасывать весь сеанс GDB в файл, включая команды, которые я печатаю и их вывод?

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

  • команды напечатаны
  • линия PS1
  • stdout и stderr команд

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

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

4b9b3361

Ответ 1

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

set logging file mylog.txt
set logging on

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

run myprog > mylog.txt

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

Ответ 2

  • Создайте текстовый файл, т.е. gdbCommands.txt, со следующими командами

set logging on my_log_file\nbt 10\nq

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

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

gdb -x gdbCommands.txt myApp core.2345

  • Откройте my_log_file и проверьте обратную линию!

howto-redirect-gdb-backtrace-output-to-a-text-file

Ответ 3

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

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