Краткая инструкция по отладчику GDB:

Запустить gdb:

gdb ./task

Для установки контрольной точки используйте команду b или break (после набора команды b возможна подставновка нажатием клавиши TAB)

b _start

После чего необходимо запустить программу командой r или run

Продолжить выполнение программы (выход из пошагового режима) c или continue

Выход из отладчика q или quit (после чего подтвердить выход y/n )

Всегда можно вызвать помощь командой h или help

Просмотр кода программы l или list

l 10
l 10,20

Шаг вперед или несколько шагов вперед s - step

s 3

Шаг без захода внутрь других методов и процедур команда n или next

Для просмотра значения можно использовать команду p или print

p $имя_регистра
p/x $eax - вывод регистра %eax в 16-ричном формате

В GDB есть мощный инструмент для непосредственного исследования памяти – команда x. Эта команда проверяет память, начиная с определенного адреса. Также она имеет ряд команд форматирования, которые обеспечиваю точный контроль над количеством байт, которые Вы захотите проверить, и над тем, в каком виде Вы захотите вывести их на экран. Общий формат команды имеет вид x/nfu addr, где /(количество)(формат отображения)(тип данных) - доступные форматы o(octal), x(hex), d(decimal), u(unsigned decimal), t(binary), f(float), a(address), i(instruction), c(char), s(string) и размеры b(byte), h(halfword), w(word). В случае каких либо трудностей, наберите help x в командной строке GDB.

Разберем примеры:
x/16xb &Mass - вывод 16-и байт с выводом в 16-ричном формате
x/2u &L - вывод двух переменных типа Long в 10-тичном формате начиная с адреса L

Более подробная инструкция по работе с отладчиком (оригинал на английском).

TUI

Возможен запуск отладчика в так называемом Text User Interface, интерфейсом на основе curses:

gdb -tui ./task

Отобразить регистры:

tui reg general

Вывести справку по TUI

help tui

GDB dashboard

Но рекоммендуем использовать инструменты для настройки интерфейса, например GDB dashboard - Modular visual interface for GDB in Python.

Скачать файл конфигурации:

wget -P ~ https://git.io/.gdbinit

Запустить gdb:

gdb ./task

Далее можно работать по стандартной схеме:

b _start
r

Настроить отображаемые разделы:

dashboard -layout memory registers source

Или можно отключить/включить разделы по отдельности:

dashboard history
dashboard expressions
dashboard threads
dashboard variables
dashboard stack
dashboard breakpoints
dashboard assembly

Если есть место в терминале можно увеличить область видимости кода:

dashboard source -style height 20

Полезно добавить для отображения кадра стека(задание №6) дамп пямяти начиная с адреса %esp (stack pointer):

dashboard memory watch $esp

Если необходимо просмотривать больше чем 4*4 байта, то расширяем видимый блок

dashboard memory watch $esp+16
dashboard memory watch $esp+32
см. рис 3.

и ваши переменные/массивы для наблюдения

dashboard memory watch &buf:

В любой момент можно запросить справку по командам:

help user

Более подробно на Wiki странице проекта. После настройки удобного интерфейса и цветовой схемы желательно сохранить свою конфигурацию чтобы не настраивать каждый раз.

Так же не забывайте команды GDB в командной строке (например x)

x/x $esp - вывод значения с адреса %esp в 16-ном виде
x/uw &sum - вывод суммы типа word в 10-ом виде (unsigned decimal word)
x/ub &c - вывод байтовой переменной в 10-ом виде (unsigned decimal byte)
x/c &c - вывод переменной c как символа (char)

Примеры окна отладки:


рис. 1


рис. 2


рис. 3