2013-04-25 3 views
0

Я пытаюсь сопоставить выход gdb с дизассемблированием (disas [address]) с исходным кодом. Я знаю, что такое сопоставление может быть выполнено с использованием информационной строки (gdb) * адреса, чтобы найти подходящую строку. Однако я не совсем понимаю формат вывода дизассемблирования. В частности, что означают следующие цифры: +4722 и +4281?Как интерпретировать выходные данные gdb?

0x00002ad61e45bd02 <+4722>: jmpq 0x2ad61e45bb49  <MsgManager::ForwardMsg(boost::shared_ptr<Channel>, boost::shared_ptr<Msg>, boost::shared_ptr<Context>)+4281> 

Я использую GNU gdb (GDB) 7.4.1.

ответ

3

В частности, то, что следующие числа, +4722 и +4281, значит

Инструкция по адресу 0x00002ad61e45bd02, который 4722 байт от начала текущей функции (скорее всего MsgManager::ForwardMsg()) является переход к адресу 0x2ad61e45bb49, который составляет 4281 байт с начала MsgManager::ForwardMsg().

Вы также можете найти команду .

+0

Я думаю, что вы можете проявить немного больше усилий в своих исследованиях, вы можете, например, начать читать немного фактической документации GDB по разборке https://sourceware.org/gdb/current/onlinedocs/gdb/Machine -Code.html # Machine-Code, а также поиск ссылки asm на вашей конкретной архитектуре – Jorch914

Смежные вопросы