Написание сценариев для повторяющихся заданий GDB - PullRequest
0 голосов
/ 16 октября 2019

Я хочу сделать ту же самую повторяющуюся работу в GDB для множества разных файлов. А именно,

bash$ gdb ./file1

... gdb starts up ...

gdb$ b *0xdeadbeef
gdb$ r < file2

... some output prints ...

gdb$ x/3a $esp

...  some addresses print ...

Есть ли какой-нибудь способ, которым я могу написать это? Запустить GDB с помощью скрипта легко, но передача команд в GDB и получение их результатов не очевидна для меня. Буду ли я использовать перенаправление?

1 Ответ

1 голос
/ 16 октября 2019

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

printf '%s\n' 'b *0xdeadbeef' 'r < file2' 'x/3a $esp' | gdb ./file1

Для нескольких входных файлов и подачи одного файла в gdb за один раз, начиная с имени file*. Используйте соответствующее выражение glob на основе вашего фактического имени файла

for file in file*; do
    printf '%s\n' 'b *0xdeadbeef' 'r < file2' 'x/3a $esp' | gdb "$file"
done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...