# Отладчики и дизассемблеры

#### **objdump**

Простейший дизассемблер, есть по умолчанию в linux.

-d только секцию кода, -D все секции. -M intel в формате intel.

```
objdump -d -M intel strswap
```

В секции .data пытается разобрать данные на команды.

#### **GDB**

Консольный отладчик, не полноценный компилятор. Не работает без дополнительных файлов при компиляции.

Загрузка программы для отладки: gdb &lt;program&gt;

Консоль gdb:

<table border="1" id="bkmrk-%D0%9F%D1%80%D0%BE%D1%81%D0%BC%D0%BE%D1%82%D1%80-list-%D0%92%D1%8B%D0%B2%D0%B5%D1%81%D1%82" style="border-collapse: collapse; width: 100%; height: 582.938px;"><colgroup><col style="width: 15.9036%;"></col><col style="width: 15.5432%;"></col><col style="width: 68.5532%;"></col></colgroup><tbody><tr style="height: 29.7969px;"><td style="height: 29.7969px;">Просмотр</td><td style="height: 29.7969px;"></td><td style="height: 29.7969px;"></td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">list</td><td style="height: 29.7969px;"></td><td style="height: 29.7969px;">Вывести 10 строк кода, повтор команды выводит следующие строки.

</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">  
</td><td style="height: 29.7969px;">&lt;число&gt;</td><td style="height: 29.7969px;">Вывод конкретной строки.</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">x/s</td><td style="height: 29.7969px;">&lt;адрес памяти&gt;</td><td style="height: 29.7969px;">адрес, по которому размещена строка</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">x/c</td><td style="height: 29.7969px;">&lt;адрес памяти&gt;</td><td style="height: 29.7969px;">вывод одного символа</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">x/13с</td><td style="height: 29.7969px;">&lt;адрес памяти&gt;</td><td style="height: 29.7969px;">x/13c 0x000000 выведет 13 символов в виде строк</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">x/13d</td><td style="height: 29.7969px;">&lt;адрес памяти&gt;</td><td style="height: 29.7969px;">вывод 13 символов в виде чисел</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">x/13x</td><td style="height: 29.7969px;">&lt;адрес памяти&gt;</td><td style="height: 29.7969px;">13 шестнадцатеричных символов</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">x/s </td><td style="height: 29.7969px;">&lt;имя ссылки&gt;</td><td style="height: 29.7969px;">x/s &amp;msg</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">Запуск</td><td style="height: 29.7969px;">  
</td><td style="height: 29.7969px;">  
</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">run</td><td style="height: 29.7969px;">  
</td><td style="height: 29.7969px;">Выполнение загруженного приложения</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">disassemble</td><td style="height: 29.7969px;">&lt;link&gt;</td><td style="height: 29.7969px;">Дизассемблирование метки</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">break</td><td style="height: 29.7969px;">&lt;link&gt;</td><td style="height: 29.7969px;">Точка останова</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">info</td><td style="height: 29.7969px;">registers</td><td style="height: 29.7969px;">вывод значений регистров</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">step</td><td style="height: 29.7969px;">  
</td><td style="height: 29.7969px;">следующий шаг </td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">continue</td><td style="height: 29.7969px;">  
</td><td style="height: 29.7969px;">продолжение выполнения</td></tr><tr><td>print p</td><td>&lt;registr&gt;</td><td>Вывод значения регистра

```
print $rax
```

</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">Дополнительно</td><td style="height: 29.7969px;">  
</td><td style="height: 29.7969px;">  
</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">quit</td><td style="height: 29.7969px;">  
</td><td style="height: 29.7969px;">Выход</td></tr><tr style="height: 46.5938px;"><td style="height: 46.5938px;">set</td><td style="height: 46.5938px;">&lt;парам&gt;</td><td style="height: 46.5938px;">Настройка параметра.

 set disassembly-flavor intel Установка формата отображения Intel

</td></tr></tbody></table>