Отладка проектов 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 .
Добавить комментарий