Пятница, 15.08.2025 19:00

Отладка проектов Qt6 в VSCode с использованием gdb

Отладка проектов Qt6 в VSCode с использованием gdb

Отладка программы для любого проекта — неотъемлемая часть цикла разработки. Для разных задач и типов приложений могут использоваться разнообразие способы отладки. Иногда достаточно вывода информации в консоль. В сложных ситуациях может потребоваться пошаговая отладка программного кода с анализом содержимого локальных переменных.

Сегодня мы рассмотрим настройку отладки проектов Qt6 в VSCode с использованием gdb.

Установка отладчика gdb

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

pacman -S mingw-w64-x86_64-gdb

Отладчик установлен.

Подготовка проекта к отладке

Немного изменим окно проекта. 

Откроем файл Main.qml

Изменим содержимое на:

import QtQuick
import QtQuick.Controls

Window {
    width: 640
    height: 480
    visible: true
    title: qsTr("Hello World")

    Column {

       anchors.horizontalCenter: parent.horizontalCenter
       anchors.verticalCenter: parent.verticalCenter

        Button {
            width: 60
            height: 30

           anchors.horizontalCenter: parent.horizontalCenter

            text: "Start"

            onClicked: {
               console.log("Clicked")
            }
        }

        BusyIndicator {
           anchors.horizontalCenter: parent.horizontalCenter
        }
    }
}

Запустим откроется новое окно нашей программы:

Изображение удалено.

Отладка программ в VSCode

В прошлой статье, для запуска проекта мы использовали панель CMake. Но эта панель не позволяет достаточно полно и гибко настраивать процесс запуска или отладки.

В VSCode существует панель Run and Debug позволяющая создавать профили запуска и настраивать сам процесс запуска с помощью файла launch.json.

Создадим файл launch.json, для этого откроем панель Run and Debug и нажмем create a launch.json file

Изображение удалено.

Выберем CMake Debugger:

Изображение удалено.

Заменим содержимое файла launch.json на:

{
    "version": "0.0.1",
    "configurations": [
        {
            "name": "C++ debug",
            "type": "cppdbg",
            "request": "launch",
            "internalConsoleOptions": "neverOpen",
            "program": "${command:cmake.launchTargetPath}",
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "gdb",
            "miDebuggerArgs": "--quiet",
            "filterStdout": true,
            "filterStderr": true,
            "logging": {
                "moduleLoad": false,
                "threadExit": false,
                "processExit": false,
                "engineLogging": false,
                "exceptions": false,
                "programOutput": true,
                "trace": false,
                "traceResponse": false
            },
        },
    ],
}

Сохраним файл.

У нас появятся ошибки:

Изображение удалено.

Это происходит из-за того, что у нас не установлено расширение для C++ от Microsoft

Установка расширения для C++ от Microsoft в VSCode

Нажмем Ctrl+Shift+X

Введем C++, подождем загрузки результатов поиска и установим расширение C/C++ от Microsoft

Изображение удалено.

После окончания установки, закроем вкладку Welcome и вновь откроем файл launch.json – ошибки пропали.

Изображение удалено.

Настройка приложения Qt для вывода отладочной информации с помощью qDebug

Откроем файл  CMakeLists.txt

Заменим строку

WIN32_EXECUTABLE TRUE

На

WIN32_EXECUTABLE FALSE

Если у вас её нет, просто добавьте её в блок:

set_target_properties

Например у меня получится:

set_target_properties(appqttest1 PROPERTIES
    MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
    MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
    WIN32_EXECUTABLE FALSE
)

Данная настройка делает программу консольной. Когда вы запускаете программу написанную для Windows из консоли, она открепляется от консоли, в которой запущена. Эта настройка заставляет программу остаться прикрепленной к консоли и весь вывод с помощью функций:

qDebug()
printf
cout

Будет выводиться здесь в консоли!

При сборке окончательной версии эту настройку следует поменять обратно на:

    WIN32_EXECUTABLE TRUE

Так как мы внесли изменения в настройки CMake нам нужно переконфигурировать проект.

Откроем панель CMake и нажмем на кнопку Delete Cache and Reconfigure. Будет выполнена полная перенастройка проекта.

Изображение удалено.

Отладка программы с помощью qDebug() и console.log()

Добавим в файл main.cpp перед

    return app.exec();

строку

qDebug() << "Started!";

Откроем панель Run and Debug и запустим программу в режиме отладки или нажмем F5:

Будет запущена программа в консоли отобразится вывод:

Started!

В окне щелкнем несколько раз по кнопке Start. В окне Terminal будет выведено несколько строк:

qlm: Clicked
Изображение удалено.

Использование точек останова при отладке

Добавим в main.cpp после строки

qDebug() << "Started!";

код:

int a = 5;
int b=6;
int c = a + b;

Щелкнем в начале строки:

int c = a + b;

Чтобы поставить точку останова:

Изображение удалено.

На этой строке появится красная точка, означающая наличие точки останова.

Нажмем F5 для запуска отладки:

Будет запущена отладка:

Изображение удалено.

Обратите внимание, что значения переменных a и b заданы, а переменная c равно 0, так как еще не проинициализирована.

Нажмем клавишу F10 для перейти к следующей строке.

Изображение удалено.

Отладка осуществляется горячими клавишами или с помощью панели отладки.

Нажмем F5 чтобы продолжить выполнение программы.

Перенастраиваем комбинацию клавиш Ctrl+R

Если вы долго работали с QtCreator то, возможно, привыкли запускать проект по нажатию Ctrl+R.

Мы используем CMake для сборки и запуска программ. Для запуска в обычном режиме используется комбинация клавиш:

Ctrl+Shift+F5

Что не совсем удобно. Давайте изменим её на привычную по QtCreator - Ctrl+R.

Нажмем Ctrl+K и не отпуская Ctrl сразу Ctrk+S

Откроется вкладка с настройками горячих клавиш:

Изображение удалено.

Установим курсор в поле поиска и нажмем:

Alt+K

Загорится надпись 

Recording keys
Изображение удалено.

Нажмем сочетание:

Ctrl+R

Отобразятся все команды привязанные к этому сочетанию клавиш:

Изображение удалено.

Удалим все строки выделяя их и нажимая клавишу del. В результате список у нас очиститься.

Изображение удалено.

Нажмем на иконку с клавиатурой в строке поиска, чтобы выключить режим захвата комбинаций клавиш и очистим поле поиска:

Изображение удалено.

В окно поиска введем

cmake run

Два раза щелкнем по пункту 

CMake: Run Without Debugging

Нажмем

Ctrl+R

Нажмем

Enter

Нажмем Ctrl+R, будет запущена наша программа:

Изображение удалено.

Обратите внимание! Это обычный запуск, это заметно по командной строке запуска!

Заключение

Сегодня мы рассмотрели настройку отладки проектов Qt6 в VSCode с использованием gdb:

Установили отладчик gdb с помощью Msys2;

Поменяли главную форму нашего проекта;

Установили расширение для отладки C++;

Добавили конфигурацию запуска для нашего проекта;

Временно, для отладки, добавили для нашего приложения консоль;

Рассмотрели отладку с помощью вывода в консоль;

Рассмотрели отладку с использованием точек останова;

Настроили запуск программы в VSCode по комбинации клавиш Ctrl+R.

В следующей статье мы рассмотрим отладку проектов QML кода в Qt Quick .

Категория Qt6
Теги vscode Qt Qt6 gdb c++

Добавить комментарий

Простой текст

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Строки и абзацы переносятся автоматически.
  • Адреса веб-страниц и email-адреса преобразовываются в ссылки автоматически.
Просмотров: 307