GDB

GDB (GNU Debugger) — кроссплатформенный отладчик командной строки из проекта GNU, предназначенный для анализа и пошагового исполнения программ, написанных на C, C++, Fortran, Ada, Rust и ряде других языков[1]. Инструмент позволяет «заглянуть внутрь» выполняемой программы, управлять её выполнением, изучать содержимое памяти и регистров, а также работать с дампами памяти и отлаживать приложения на удалённых устройствах[2].

Общие сведения
GDB
Тип Отладчик
Автор Ричард Столлман
Разработчик Free Software Foundation
Написана на C, C++ и Python
Интерфейс CLI, TUI
Операционные системы Linux, macOS, Windows и другие Unix-подобные ОС
Языки интерфейса английский
Первый выпуск 1986
Последняя версия 16.3 (20 апреля 2025)
Репозиторий sourceware.org/git/binut…
Состояние активно разрабатывается и обновляется
Лицензия GNU GPLv3+
Сайт gnu.org

Функции

GDB охватывает широкий спектр возможностей, необходимых для профессиональной отладки:

  • Контроль выполнения — запуск, перезапуск и приостановка программы; пошаговое исполнение с командами step, next, until и возобновление командой continue[2].
  • Точки останова и наблюдения — обычные, условные, временные breakpoints, а также watchpoints, реагирующие на изменение выбранной области памяти[3].
  • Инспекция данных — просмотр локальных и глобальных переменных, регистров процессора, содержимого произвольных адресов, анализ стека вызовов (backtrace)[1].
  • Изменение состояния на лету — редактирование значений переменных, памяти и указателя инструкции для проверки альтернативных сценариев исполнения[4].
  • Анализ core-dump файлов — загрузка исполняемого файла и дампа памяти для изучения причины аварийного завершения программы[4].
  • Удалённая отладка — работа через JTAG-адаптеры или TCP/IP для встроенных и распределённых систем[5].
  • Поддержка многопоточности и множества языков программирования[6].
  • Дизассемблирование и низкоуровневая отладка на уровне машинных инструкций[7].
  • Многообразие интерфейсов — классический CLI, встроенный текстовый TUI (gdb -tui), машинный интерфейс GDB/MI для IDE и поддержка Debug Adapter Protocol в скриптах Python[8].

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

Базовый рабочий процесс в GDB включает компиляцию программы с опцией -g, запуск отладчика и установку точек останова.

  • Пошаговая отладка функции. Ниже приведён фрагмент сеанса для программы, вычисляющей факториал:
: (gdb) break 15 • (gdb) run • (gdb) print num • (gdb) next • (gdb) print result  
  Команды позволяют остановить выполнение на строке вызова функции, проверить значение аргумента, выполнить следующую строку без захода внутрь и убедиться в корректности возвращаемого значения.[9]
: gdb ./my_program core.12345(gdb) bt(gdb) info registers  
  Такой набор команд показывает трассировку стека и значения регистров в момент получения, например, сигнала SIGSEGV, что помогает локализовать ошибку.[4]
  • Удалённая отладка через gdbserver:
: На целевой машине — gdbserver :1234 ./my_program;  
  На хосте — gdb ./my_program(gdb) target remote 192.168.1.100:1234 → установка breakpoints и continue.  
  Такой подход особенно востребован при работе с встраиваемыми устройствами или контейнерами без полноценной среды разработки.[5]

Примечания

  1. 1 2 GDB (GNU Debugger) Overview: how to install, pros & cons. omi.me. Дата обращения: 20 июня 2025.
  2. 1 2 GDB Documentation. sourceware.org. Дата обращения: 20 июня 2025.
  3. Debugging in Software Development with GDB. qodo.ai. Дата обращения: 20 июня 2025.
  4. 1 2 3 What is GDB in Computing? 60sec.site. Дата обращения: 20 июня 2025.
  5. 1 2 gdbserver(1) — Linux manual page. man7.org. Дата обращения: 20 июня 2025.
  6. Introduction to GNU gdb Debugger. math.nist.gov. Дата обращения: 20 июня 2025.
  7. A beginner’s guide to GDB. Medium. Дата обращения: 20 июня 2025.
  8. GDB Tutorial. University of Minnesota. Дата обращения: 20 июня 2025.
  9. GDB — Step by Step Introduction. GeeksforGeeks. Дата обращения: 20 июня 2025.