0Pricing
C++ Academy · Урок

Использование gdb и lldb

Пошагово выполняйте программы

«Использование gdb и lldb» — бесплатный урок C++ Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения C++ Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс C++ Academy содержит 4 уроков всего.

Интерактивные отладчики

gdb (GNU) и lldb (LLVM) позволяют приостановить работающую программу, проверить значения переменных и проходить код построчно. Их команды похожи.

Компиляция с отладочной информацией

Всегда собирайте программу с -g (а лучше ещё и с -O0), чтобы отладчик мог сопоставить машинный код с исходным кодом.

g++ -g -O0 main.cpp -o app
# then
gdb ./app

Установка точек останова

Точка останова приостанавливает выполнение в выбранном месте.

  • gdb: break main.cpp:10 или break myFunc
  • lldb: breakpoint set --file main.cpp --line 10 или b myFunc

Запуск программы

Начните выполнение с помощью run (или r). Программа остановится на первой достигнутой точке останова и будет готова к проверке.

Пошаговое выполнение кода

Основные команды пошагового выполнения (их названия одинаковы в gdb и lldb):

  • next / n: выполнить одну строку, не заходя в вызываемые функции
  • step / s: войти в вызываемую функцию
  • finish: выполнять код, пока текущая функция не вернётся
  • continue / c: продолжить выполнение до следующей точки останова

Проверка переменных

Выводите значения, чтобы понять состояние программы.

  • gdb: print x, print arr[2]
  • lldb: frame variable или p x

Цель для демонстрационного сеанса

Рассмотрим эту программу: можно установить точку останова в цикле и выводить sum на каждой итерации.

#include <iostream>

int main() {
    int sum = 0;
    for (int i = 1; i <= 3; ++i) {
        sum += i;
    }
    std::cout << sum << "\n";
    return 0;
}

Стек вызовов

Когда программа остановлена, команда backtrace (gdb) или bt (lldb) показывает цепочку вызовов функций. Используйте frame N, чтобы перейти к вызывающей функции и проверить её локальные переменные.

Точки наблюдения

Точка наблюдения останавливает программу при изменении переменной и помогает найти место, где происходят неожиданные изменения.

  • gdb: watch counter
  • lldb: watchpoint set variable counter

Условные точки останова

Останавливайте выполнение только при истинности условия, чтобы не выполнять код вручную пошагово.

  • gdb: break loop.cpp:5 if i == 99
  • lldb: breakpoint set --line 5 --condition "i == 99"

Отладка сбоев

Запустите аварийно завершающуюся программу под отладчиком: при ошибке сегментации он остановится на строке, вызвавшей ошибку. Затем используйте bt, чтобы узнать, как программа туда попала. Дамп памяти также можно проанализировать позднее.

Быстрая проверка

Вспомните команды пошагового выполнения.

Повторение

Вы изучили интерактивную отладку.

  • Собирайте программу с -g -O0
  • Устанавливайте точки останова, используйте run, затем next/step/finish
  • Проверяйте код с помощью print/frame variable и backtrace
  • Точки наблюдения и условные точки останова помогают находить сложные ошибки

Часто задаваемые вопросы

Урок «Использование gdb и lldb» бесплатный?

Да — полный текст урока «Использование gdb и lldb» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс C++ Academy, подпишись на CoddyKit PRO. Курс C++ Academy содержит 4 уроков всего.

Чему я научусь в уроке «Использование gdb и lldb»?

Пошагово выполняйте программы Ты практикуешь C++ Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать C++ Academy?

Предыдущий опыт не требуется. C++ Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Использование gdb и lldb»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке C++ Academy?

Да. Каждый урок C++ Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Использование gdb и lldb
  2. AddressSanitizer
  3. UBSan и TSan
  4. Основы Valgrind
← Назад к C++ Academy