Как стать автором
Обновить

Настройка отладки C++ проекта через GDB в VSCode

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров2.1K

Настройка отладки C++ проекта через GDB в VSCode

Если вы работаете над собственными библиотеками на C++, особенно такими, где важна строгая типизация и предсказуемое поведение компилятора, то наверняка сталкивались с ситуацией, когда Microsoft Visual Studio (MSVS) сама "подчищает" за вами типы или подключает лишние зависимости. Иногда это удобно, но при разработке низкоуровневого кода это может мешать.

В этой статье я расскажу, как перейти с MSVC на MinGW, правильно настроить CMake и использовать GDB для отладки вашего C++-проекта прямо в Visual Studio Code.


Почему стоит выбрать MinGW?

Раньше я использовал MSVC, потому что он шёл "из коробки" с Windows и Visual Studio. Но со временем понял, что он слишком много делает за меня: автоматически приводит типы, подключает стандартные библиотеки, иногда даже не даёт увидеть настоящее поведение программы.

После этого решил попробовать MinGW — порт GCC для Windows. Он оказался отличной заменой:

  • Работает по принципам GNU Toolchain;

  • Позволяет писать кроссплатформенный код;

  • Не лезет в код сам — всё остаётся под вашим контролем;

  • Поддерживает GDB — мощный отладчик, который можно использовать внутри VSCode.

Именно возможность использовать GDB стала ключевым фактором при переходе с MSVC на MinGW во время разработки своей библиотеки ModernStringС++ ( Github ).


Шаг 1: Настройка CMake под MinGW

До этого я собирал проект так:

cd build
cmake ..
cmake --build . --config Release

Это работало, но всегда использовалось окружение (компилятор) MSVC. Чтобы перейти на MinGW, нужно немного изменить команду:

cmake -B build -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Debug
cmake --build . --config Debug

Что здесь происходит:

  • -B build указывает, что файлы сборки будут генерироваться в директории build;

  • -G "MinGW Makefiles" говорит CMake, что мы хотим использовать именно MinGW;

  • -DCMAKE_BUILD_TYPE=Debug включает режим отладки, чтобы GDB мог нормально работать.

Если вы хотите собрать релизную версию, просто замените Debug на Release.


Шаг 2: Сборка проекта

После того как CMake сгенерировал нужные файлы, можно запускать сборку:

cmake --build build --config Debug

Если вы используете Release-сборку, не забудьте указать его явно:

cmake --build build --config Release

Шаг 3: Включаем GDB в VSCode

Теперь, когда проект собран с флагами отладки, пора подключить GDB. Для этого мне потребовались:

  • Установленный MinGW-w64 (или MSYS2);

  • GDB, который идёт в составе MinGW;

  • Расширение C/C++ в Visual Studio Code.

Конфигурация .vscode/launch.json

Добавьте в свой launch.json следующий блок:

{
    "name": "(gdb) Запустить",
    "type": "cppdbg",
    "request": "launch",
    "program": "${workspaceFolder}/build/ModernString.exe",
    "args": [],
    "stopAtEntry": false,
    "cwd": "${workspaceFolder}/build",
    "environment": [],
    "externalConsole": false,
    "MIMode": "gdb",
    "miDebuggerPath": "C:/msys64/mingw64/bin/gdb.exe" // Путь до дебагерра 
}

⚠️ Обязательно проверьте путь к gdb.exe. У вас он может быть другим, в зависимости от установленного дистрибутива. Ищите через win + S (Не всегда помогает). Я лично использую программу Everything

Эта конфигурация:

  • Использует GDB как движок отладки;

  • Запускает программу из папки build;

  • Не открывает внешний терминал (всё работает внутри VSCode);

  • Показывает значения переменных, точки останова, стек вызовов и прочие полезности.


Что получается в результате?

После всех этих шагов вы получаете комфортную среду разработки:

  • Полный контроль над процессом компиляции;

  • Возможность полноценной отладки через GDB;

  • Современные возможности C++;

  • Чистую структуру проекта благодаря CMake.


Несколько советов на заметку

  • Чтобы убедиться, что GDB установлен, просто выполните в терминале:

    gdb --version
  • Проверьте, добавлен ли mingw32-make в системные переменные окружения PATH.

  • Если возникают ошибки при сборке — сравните версии CMake и MinGW, они должны быть совместимыми.

  • Для автоматизации сборки и запуска можно использовать файл tasks.json в папке .vscode.


Где почитать больше


Заключение

Переход с MSVC на MinGW дал мне больше контроля над проектом и позволил использовать GDB — один из самых мощных отладчиков для C++. Это особенно важно, если вы пишете свои библиотеки и хотите точно знать, что и как происходит в вашем коде.

Если эта статья вам помогла — ставьте лайк и подписывайтесь на мой канал.
Вопросы, предложения, или просто слова поддержки — пишите в комментариях!

Теги:
Хабы:
+2
Комментарии28

Публикации

Работа

QT разработчик
8 вакансий
Программист C++
101 вакансия

Ближайшие события