Вопрос GDB - как мне пройти дизассемблированный код построчно?

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

(gdb) file SomeCode

Это дает мне это сообщение:

Reading symbols from ../overflow/SomeCode ...(no debugging symbols found)...done.

Тогда использую:

(gdb) disas main

что дает мне всю сборку. Я хотел установить точку останова и использовать команду «next», но ни одна из команд, которые я пробовал, не сработала. Кто-нибудь знает синтаксис, который я бы использовал?


person GetOffMyLawn    schedule 04.05.2010    source источник


Ответы (2)


попробуйте использовать ni, который равен nexti. эквивалент si, который является пошаговой инструкцией

person Anycorn    schedule 04.05.2010
comment
когда я пытаюсь просто ni, next, step и т. д. после команды file SomeCode или после disas main, он говорит, что программа не запускается. Если я попытаюсь выполнить run ./SomeCode, появится сообщение, что в разрешении отказано. Есть идеи, что мне не хватает? - person GetOffMyLawn; 04.05.2010
comment
@user сначала устанавливает точку останова, запуск, затем: break main, run, stepi. читайте руководство, оно довольно хорошо объясняет. Я не хочу вас отталкивать, руководство - действительно отличный источник для изучения отладки. также вы можете использовать команду справки, например, help break - person Anycorn; 04.05.2010
comment
@user, если вы все еще боретесь, опубликуйте свои команды, я укажу, где вы сделали ошибку. - person Anycorn; 04.05.2010
comment
Я перекомпилировал из файла C, и теперь он, похоже, работает. Я думаю, что двоичный файл, который дал мне мой учитель, не был скомпилирован с ключом -g. Хотя спасибо за вашу помощь - person GetOffMyLawn; 04.05.2010

nexti, если вы хотите перепрыгнуть через вызовы функций. stepi, если вы хотите ввести вызов функции.

Следующая документация очень полезна; в нем есть список всех важных команд, которые вы можете использовать в gdb.

X86-64: http://csapp.cs.cmu.edu/public/docs/gdbnotes-x86-64.pdf

IA32: http://csapp.cs.cmu.edu/public/docs/gdbnotes-ia32.pdf

person Catie    schedule 24.10.2010