Главная > Среда и утилиты > gdb

gdb: GNU отладчик

gdb (GNU Debugger) — это мощный инструмент для анализа и отладки программ, написанных на различных языках программирования, таких как C, C++, Fortran и других. Он необходим для понимания внутреннего поведения программы, поиска и исправления ошибок. gdb поддерживает различные сценарии отладки, включая подключение к запущенным процессам и анализ файлов дампов (core files).

Обзор

gdb предоставляет расширенные возможности отладки, позволяя контролировать поток выполнения программы, проверять значения переменных и состояние памяти. Он особенно полезен для анализа проблем в скомпилированных бинарных файлах.

Основные функции

  • Запуск/остановка выполнения программы
  • Установка точек останова (breakpoint)
  • Проверка и изменение значений переменных
  • Просмотр трассировки стека
  • Просмотр содержимого памяти
  • Анализ файлов дампов

Основные опции

gdb в основном используется в интерактивном режиме, но при запуске можно использовать определенные опции для начальной настройки или выполнения неинтерактивных скриптов.

Опции запуска/подключения

Сгенерированная команда:

Комбинируйте команды.

Описание:

`gdb` Запускает команду.

Комбинируйте эти опции, чтобы виртуально выполнять команды с помощью ИИ.

Примеры использования

gdb часто используется в интерактивном режиме, поэтому в примерах также включены команды, вводимые в приглашении gdb.

Начало сеанса отладки

gdb ./my_program

Загрузка скомпилированной программы (например, my_program) в gdb для начала сеанса отладки.

Установка точки останова и запуск

gdb ./my_program
(gdb) b main
(gdb) r

Установка точки останова в функции main и запуск программы. Выполнение остановится в точке останова.

Проверка значения переменной

gdb ./my_program
(gdb) b my_function
(gdb) r
(gdb) p my_variable

После остановки в точке останова вывод текущего значения определенной переменной.

Анализ файла дампа

gdb ./my_program core.dump

Анализ файла дампа, созданного в результате сбоя программы, для изучения состояния программы во время сбоя.

Подключение к запущенному процессу

gdb -p 12345

Подключение gdb к процессу с идентификатором (PID) 12345 для отладки.

Автоматическое выполнение команды при запуске

gdb -ex 'b main' -ex 'r' ./my_program

Установка точки останова в функции main и запуск программы одновременно с запуском gdb.

Установка

gdb обычно не входит в стандартную поставку большинства дистрибутивов Linux и должен быть установлен как часть пакетов для разработки.

Debian/Ubuntu

sudo apt update && sudo apt install gdb

Установка gdb с использованием пакетного менеджера APT.

Fedora/CentOS/RHEL

sudo dnf install gdb

Установка gdb с использованием пакетного менеджера DNF или YUM.

Советы и рекомендации

Советы и рекомендации по эффективному использованию gdb.

Включение информации для отладки при компиляции

Для отладки с помощью gdb необходимо компилировать программу с опцией `-g`, чтобы включить информацию для отладки. В противном случае вы не сможете просматривать информацию об исходном коде или имена переменных.

  • Пример: `gcc -g myprogram.c -o myprogram`

Часто используемые команды gdb

Основные команды, часто используемые в приглашении gdb.

  • `b <имя_функции/номер_строки>`: установка точки останова (breakpoint)
  • `r`: запуск программы (run)
  • `n`: переход к следующей строке (next)
  • `s`: вход в функцию (step)
  • `p <имя_переменной>`: вывод значения переменной (print)
  • `c`: продолжение выполнения до следующей точки останова (continue)
  • `q`: выход из gdb (quit)

Использование режима TUI

Использование режима текстового пользовательского интерфейса (TUI) gdb позволяет повысить эффективность отладки, просматривая исходный код, регистры, ассемблер и т.д. одновременно.

  • `gdb -tui <program>` или использование команды `layout src` внутри gdb

Те же команды в категории