Как пройти через исполняемый файл с помощью gdb? - PullRequest
0 голосов
/ 12 июля 2020

Я пытаюсь записывать значения, хранящиеся в регистрах, в каждой инструкции сборки функции. У меня есть только исполняемый файл для работы. Я понял, как получить макет asm, но с трудом перешагнул через это. Когда я использую команду «b 1», чтобы установить точку останова, с которой я мог бы начать переход, я получаю сообщение об ошибке «Нет строки 1 в файле» ../sysdeps/i386/dl-procinfo.c ». Вот снимок экрана, чтобы показать команды, которые я ввел до сих пор:

введите описание изображения здесь

1 Ответ

2 голосов
/ 12 июля 2020

Используйте имя функции или адрес памяти при установке точки останова вместо этого или скомпилируйте без оптимизации, если вам нужны номера строк.

(gdb) b main // will put a break point at start of function main
(gdb) r      // run

В качестве альтернативы используйте команду start, которая устанавливает временную точку останова на main ( ) и начинает выполнение.

Используйте n для перехода к следующей инструкции и si для перехода к функции / метке.

Чтобы отобразить registers, вы можете использовать info regs команда или i r. В качестве альтернативы используйте макет регистров, что намного лучше. Чтобы получить значение в определенном регистре, используйте print, например print $rax.

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