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