Обзор
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