Погружение в технику и философию gdb

       

отображение машинной команды по заданному адресу


Вместо адреса можно использовать любое другое выражение, переменную или регистр (если регистры доступны), однако, отлаживать программу в таком режиме _крайне_ неудобно и лучше задействовать режим автоматического отображения, задаваемый командой "display".

Режим автоматического отображения позволяет выводить значение любого выражения, регистра, ячейки памяти, машинной инструкции при каждой остановке gdb (например, при пошаговом выполнении). Команда "display/i $pc" (которую достаточно дать один раз за весь сеанс), будет отображать одну машинную инструкцию под $pc за раз, однако, это не очень удобно и на практике постоянно возникает необходимость узнать — какая же будет следующая инструкция за выполняемой. Мыщъх обычно выводит по три инструкции за раз: "display/3i $pc" и довольствуется жизнью в полный рост.

(gdb) display/3i $pc

1: x/3i $pc

0x200008:     mov    $0x2a,%bl

0x20000a:     jmp    0x200040

0x20000f:     add    %al,(%edx)

(gdb) ni

0x0020000a in ?? ()

1: x/3i $pc

0x20000a:     jmp    0x200040

0x20000f:     add    %al,(%edx)

0x200011:     add    %al,(%ebx)

(gdb) ni

0x00200040 in ?? ()

1: x/3i $pc

0x200040:     jmp    0x200046

0x200045:     mov    $0xe8,%al

0x200047:     movsl  %ds:(%esi),%es:(%edi)



Содержание раздела