Краткая инструкция по отладчику GDB:
Запустить gdb:
gdb ./task
Для установки контрольной точки используйте команду b или break
(после набора команды b возможна подставновка нажатием клавиши TAB)
b _start
После чего необходимо запустить программу командой r или run
Продолжить выполнение программы (выход из пошагового режима) c или continue
Выход из отладчика q или quit (после чего подтвердить выход y/n )
Всегда можно вызвать помощь командой h или help
Просмотр кода программы l или list
l 10l 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 _startr
Настроить отображаемые разделы:
dashboard -layout memory registers source
Или можно отключить/включить разделы по отдельности:
dashboard historydashboard expressionsdashboard threadsdashboard variablesdashboard stackdashboard breakpoints dashboard assembly
Если есть место в терминале можно увеличить область видимости кода:
dashboard source -style height 20
Полезно добавить для отображения кадра стека(задание №6) дамп пямяти начиная с адреса %esp (stack pointer):
dashboard memory watch $esp
Если необходимо просмотривать больше чем 4*4 байта, то расширяем видимый блок
dashboard memory watch $esp+16dashboard 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