Я отлаживаю двоичный файл в gdb. Это был код C, составленный gcc на Intel IA-32. Я получил этот результат от objdump
. Меня больше всего интересует последняя строка:
08048d9e <func_1>
8048d9e: 55 push %ebp
8048d9f: 89 e5 mov %esp,%ebp
8048da1: 83 ec 18 sub $0x18,%esp
8048da4: c7 44 24 04 88 99 04 movl $0x8049988,0x4(%esp)
8048dab: 08
8048dac: 8b 45 08 mov 0x8(%ebp),%eax
8048daf: 89 04 24 mov %eax,(%esp)
8048db2: e8 54 01 00 00 call 8048f0b <strings_not_equal>
Я верю, что эта последняя строка сравнит значение, найденное по указанному адресу: 8048f0b
. Я пытаюсь:
(gdb) x 0x8048f0b
и получите:
0x8048f0b <strings_not_equal>: 0x57e58955
Я неправильно интерпретирую сборку? Это правильный способ прочитать значение адреса в gdb? Я как бы ожидал найти более полезную шестнадцатеричную ценность ascii. Мне интересно найти сохраненное строковое значение, которое сравнивается с.
Также у вас есть любимый инструмент gui, который вы хотите использовать для такого типа отладки? Я думал о попытке ddd. Я хочу найти более простой способ отладки.