Консольный отладчик GDB

GDB – полноценный консольный отладчик для ОС позволяет останавливать выполнение в произвольных точках, отслеживать состояние переменных, стека, памяти и регистров и т. д. Возможна удалённая отладка.

Запуск:

gdb executable
gdb

После запуска можно указать файл для отладки:

file executable

Либо подключиться к удалённому сеансу отладки:

target remote host:port

Также можно отлаживать уже запущенную программу (нужны права суперпользователя):

attach <pid>

Запустить отлаживаемую программу на выполнение:

run arguments

Программа остановится, если выполнение дойдёт до точки останова, либо, если программе придёт сигнал. Точки останова можно установить командой:

break main.c:15

или

break 15

если отлаживается, например, программа из одного файла. Команды step и next выполняют следующую строку после остановки. Первая входит в функцию, если следующая строка содержит её вызов, вторая игнорирует вызов функции и останавливается уже после её выполнения. Команда continue продолжает выполнение до следующей точки останова, либо до следующего сигнала, либо до завершения программы. Команда quit осуществляет выход из GDB. С помощью команды:

print выражение

можно выполнить любое выражение языка C, содержащее переменные, видимые в текущей точке программы. Команда list выдаёт листинг части программы в окрестности текущей строки.

GDB весьма удобен при отладке, если есть доступ к исходникам и отладочной информации. Для более подробной информации можно обратиться к документации GDB:

info gdb

В частых случаях будет более удобно использование средств, предоставляемых ОС, таких как strace.