Консольный отладчик 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.