Отладка qt creator windows

Отладка с помощью Qt Creator

Введение

Qt Creator не имеет собственного отладчика. Вместо этого он предоставляет графический интерфейс к различным отладчикам:

Платформа Компилятор Отладчик
Linux, Unixes, Mac OS gcc GNU Symbolic Debugger (gdb)
Windows/MinGW gcc GNU Symbolic Debugger (gdb)
Windows Microsoft Visual C++ Compiler Debugging Tools for Windows/Microsoft Console Debugger (CDB)

Интерфейс позволит вам отлаживать программу построчно и или по каждой инструкции, прерывать запущенную программу, устанавливать точки останова, просматривать содержимое стека вызовов, локальных и глобальных переменных и т. д.

В Qt Creator сырая информация, предоставляемая отладчиком, отображается явным и лаконичным образом, упрощая процесс отладки.

В дополнение к базовой функциональности IDE: просмотр стека, просмотр локальных и наблюдаемых переменных, регистров и т.д., Qt Creator имеет дополнительные особенности, делая отладку приложений, основанных на Qt, проще. Интерфейс отладчика знает о внутреннем устройстве некоторых классов Qt, таких как QString, контейнеры QTL и, что особенно важно, QObject (и унаследованные от него классы). Таким образом, он может ясно представлять данные Qt.

Замечания по установке отладчика

Отладчик Замечания
Gdb Требует gdb версии 6.8.
Debugging Tools for Windows Использование этого отладчика требует установку пакета Debugging Tools for Windows 32-bit или 64-bit (версии 6.10 для 32-bit или 64-bit версии Qt Creator соответственно), который доступен для свободного скачивания с Microsoft Developer Network.

Собранная версия Qt SDK for Windows будет использовать библиотеку если она присутствует в системе. При сборке Qt Creator с использованием компилятора Microsoft Visual C++, будет проверен путь "%ProgramFiles%\Debugging Tools for Windows" чтобы убедиться что все необходимые заголовочные файлы присутствуют.

Взаимодействие с отладчиком

В режиме Отладка несколько прикрепляемых виджетов используется для взаимодействия с отлаживаемой программой. Часто используемые виджеты отображаются по умолчанию; используемые редко спрятаны. Для изменения настроек по умолчанию, выберите Отладка, а затем выберите Виды.

Здесь вы можете заблокировать и разблокировать положение ваших видов, а также показать или спрятать их. Среди видов, которые вы можете отобразить есть Точки останова, Дизассемблер, Модули, Регистры, Отладчик, Стек и Поток. Расположение ваших прикрепляемых виджетов будет сохранено для последующих сессий.

Точки остановки

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

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

Обычно точки останова связаны с файлом исходных кодов и строкой или началом функции — оба варианта доступны в Qt Creator.

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

Вы можете установить точки останова:

  • В конкретной строке на которой вы хотите остановить программу — щёлкните на поле слева или нажмите F9 (F8 для Mac OS X).
  • На функции, в которой вы хотите прерывать программу — введите имя функции в Установить точку останова на функцию. в меню Отладка.

Вы можете удалить точку останова:

  • Щёлкнув на маркер точки останова в текстовом редакторе.
  • Выбрав точку останова в виде точек останова и нажав Delete.
  • Выбрав Удалить точку останова из контекстного меню точки останова в виде Точки останова.

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

Выполнение

Чтобы запустить программу под отладчиком выберите в меню Отладка пункт Начать отладку, или просто нажмите F5. Qt Creator проверит является ли собранная программа актуальной и пересоберёт её при необходимости. Отладчик получит контроль и запустит программу.

Замечание: Запуск программы в отладчике может занять заметное количество времени, обычно в диапазоне от нескольких секунд до нескольких минут, если используются сложные особенности (как QtWebKit).

После запуска программы она работает как обычно; тоже самое и с производительностью. Пользователь может прервать выполняемую программу выбрав Прервать из меню Отладка. Программа автоматически прерывается как только дойдет до точки останова.

Как только программа остановиться, Qt Creator:

  • Получает данные, представляющие стек вызовов в текущей положении программы.
  • Получает содержимое локальных переменных.
  • Просматривает Наблюдаемые.
  • Обновляет виды Регистры, Модули и Дизассемблер.

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

Чтобы закончить отладку нажмите Shift+F5. Строка кода может быть исполнена как одно целое с F10; чтобы выполнить функцию или подфункцию используйте F11. Также вы можете продолжить выполнение программы с помощью F5. Можно продолжить выполнение программы до окончания текущей функции или перепрыгнуть на произвольную позицию в текущей функции.

Когда отлаживаемая программа прерывается, Qt Creator отображает наследованные вызовы процедур, приводящие к текущему положению в следе стека вызовов. След стека строится из кадров стека вызовов, каждый из которых представляет конкретную функцию. Для каждой функции Qt Creator попытается получить имя файла и номер строки соответствующих файлов исходных кодов. Эти данные отображаются в виде Стек.

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

Если вы щёлкните на кадре с известным положением в исходном коде, текстовый редактор перейдёт в соответствующее положение и обновит вид Локальные и наблюдаемые переменные, делая их видимыми как будто программа была прервана перед входом в функцию.

Потоки

Если прервано многопоточное приложение, то можно использовать вид Поток или выпадающий список с именем Поток в строке состояния отладчика для переключения от одного потока к другому. Вид Стек будет настраивать себя соответственно.

Локальные и наблюдаемые переменные

Когда бы программа не остановилась под контролем отладчика, он получает информацию о верхнем кадре стека и отображает его в виде Локальные и наблюдаемые переменные. Он обычно включает информацию о параметрах функции в этом кадре, а также локальные переменные.

Составные переменные структур или классов в виде будут отображены как «раскрываемые». Щёлкните на «+» чтобы раскрыть элемент и показать все его члены. Помимо отображаемые значения и типа, пользователь может просмотреть и перейти к низкоуровневой компоновке данных объекта.

Замечание:
Gdb, и поэтому отладчик Qt Creator, работают с оптимизированной сборкой на Linux и Mac OS X. Тем не менее, оптимизация может привести к изменению порядка инструкций и иногда даже к полному удалению некоторых локальных переменных. В этом случае вид Локальные и наблюдаемые переменные может показывать неожиданные данные.
Отладочная информация, предоставляемая gcc не включает достаточной информации о времени, когда переменная инициализируется. Поэтому, Qt Creator не может сказать является ли содержимое начальной переменной «настоящими данными» или «начальным шумом». Если QObject появляется неинициализированным, его значение будет указано как «вне области». Тем не менее, не все неинициализированные объекты могут быть распознаны таким образом.

Вид Локальные и наблюдаемые переменные также предоставляет доступ к наиболее мощной особенности отладчика: полное отображение данных, принадлежащих базовым объектам Qt. Для включения этой особенности, выберите Использовать помощник отладчика в меню Отладка. Вид Локальные и наблюдаемые переменные будут автоматически переупорядочены для отображения высокоуровневого вида объектов. Например, в случае с QObject, вместо отображения указателя на некоторую закрытую структуру данных, вы увидите список потомков, сигналы и слоты.

Аналогично, вместо отображения множества указателей и целых чисел, отладчик Qt Creator покажет содержимое QHash или QMap в упорядоченном виде. Также отладчик покажет данные доступа для QFileInfo и предоставит доступ к «реальному» содержимому QVariant.

Вид Локальные и наблюдаемые переменные может быть использован для изменения содержимого переменной простого типа данных, такого как int или float, когда программа прервана. Чтобы сделать это, щёлкните на столбце Значение, исправьте значение в встроенном редакторе и нажмите Enter (или Return).

Замечание: Набор наблюдаемых переменных сохраняется в вашей сессии.

Модули

По умолчанию, вид Модули спрятан, так как он полезен только с экспериментальным средством отложенной загрузки отладочной информации. Вы можете включить это свойство выбрав Быстрый запуск отладчика

С этим свойством, отладочная информация из библиотеки Qt не загружается при запуске программы, таким образом уменьшая время запуска для некоторых приложений. В этом случае вы можете использовать вид Модули для загрузки этой информации вручную при необходимости.

Замечание: В этом случае некоторые точки останова не могут быть вызваны отладчиком.

Дизассемдлер и Регисты

По умолчанию, виды Дизассемблер и Регистры спрятаны. Вид Дизассемблер отображает дизассемблированный код для текущей функции; вид Registers отображает текущее состояние регистров CPU. Оба вида полезны для низкоуровневых команд, таких как Перейти на одну инструкцию и Перейти через инструкцию.

Библиотека помощника отладчика

При отладке Qt Creator динамически загружает вспомогательную библиотеку в вашу программу. Эта вспомогательная библиотека обеспечивает Qt Creator красивое отображение типов Qt и STL. Пакет Qt SDK уже содержит заранее скомпилированную библиотеку помощника отладчика. Чтобы создать библиотеку помощника отладчика, выберите Параметры. из меню Инструменты и перейдите на закладку Qt 4/Версии Qt. Так как внутренняя компоновка Qt может меняться для разных версий, библиотека помощника отладчика собирается для каждой версии Qt.

Пособие по интерфейсу отладчика

В нашем примере TextFinder мы считывали текстовый файл в QString, а замет отображали его в QTextEdit. Предположим, что вы хотите взглянуть на эту строку QString line и посмотреть какую информацию она хранит. Выполните шаги, описанные ниже, чтобы разместить точку останова и просмотреть данные объекта QString.

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

Сначала, мы установим точку останова на строке где мы вызываем setPlainText() щёлкнув между номером строки и границей окна. Затем, выберите Начать отладку из меню Отладка или нажмите F5.

Точки останова указываются в виде Точки останова, показанного ниже, в режиме Отладка. Если вы желаете удалить точку останова, просто щёлкните на ней правой кнопкой мыши и выберите Удалить точку останова из контекстного меню.

Чтобы просмотреть содержимое строки line, взгляните на вид Локальные или наблюдаемые переменные.

Предположим что мы изменили нашу функцию on_findButton_clicked() чтобы она перемещалась в начало документа и продолжала поиск после того, как курсор достигал конца документа. Эта функциональность может быть добавлена с помощью фрагмента кода, приведённого ниже:

Тем не менее, если вы соберёте и запустите этот код, приложение не будет работать правильно из-за логической ошибки. Чтобы обнаружить эту логическую ошибку, вы можете пройти через код, используя следующие кнопки:

Обзор API

Статьи о Qt

Примеры

Содержание

Отладка приложений Qt

В режиме Отладка вы можете взаимодействовать с отладчиком разными способами, включая следующие:

  • Пройти программу построчно или по каждой инструкции.
  • Прервать работающую программу.
  • Установить точки остановки.
  • Просматривать содержимое стека вызовов.
  • Просматривать и изменять регистры и содержимое памяти отлаживаемого приложения.
  • Просматривать и изменять регистры и содержимое памяти локальных и глобальных переменных.
  • Просматривать список загруженных разделяемых библиотек.
  • Создать снимки текущего состояния отлаживаемого приложения и просмотреть их позже.

Qt Creator отображает сырую информацию, предоставляемую отладчиками, явным и лаконичным образом с целью упростить процесс отладки насколько возможно без ограничения возможностей отладчиков.

В дополнение к базовой функциональности IDE, предоставляемой просмотром стека, просмотром локальных и наблюдаемых переменных, регистров и так далее, Qt Creator имеет дополнительные особенности, делая отладку основанных на Qt приложений проще. Подключаемый модуль отладчика знает о внутреннем устройстве некоторых классов Qt, таких как QString, контейнеры Qt и, что особенно важно, QObject (и унаследованные от него классы), а также большинство контейнеров C++ Standard Library и некоторых расширений gcc и Symbian. Понимание их устройства используется для представления содержимого таких классов удобным способом.

Для просмотра примера того как отлаживать приложения в режиме Отладка смотрите Отладка примера приложения.

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

Если вы установили Qt Creator в качестве части Qt SDK, GNU Symbolic Debugger был установлен автоматически и должен быть готов для начала отладки после создания нового проекта. Если вы хотите особую настройку, такую как использование инструментов отладки для Windows, смотрите Настройка отладчика.

Режимы действий

Подключаемый модуль отладчика работает в различных режимах в зависимости от того где и как процесс запущен и выполняется. Некоторые режимы доступны только для определённых операционных систем или платформ.

Вы можете запустить отладчик в следующих режимах:

  • Простой для отладки локально запущенных приложений, таких как GUI приложения на Qt.
  • Терминал для отладки локально запущенных процессов которым требуется консоль, обычно это приложения без GUI.
  • Подключённый для отладки локальных процессов запущенных вне Qt Creator.
  • Удалённый для отладки запущенных на другой машине процессов.
  • Ядро для отладки завершившихся аварийно процессов на Unix.
  • Post-mortem для отладки завершившихся аварийно процессов на Windows.
  • TRK для отладки процессов, запущенных на устройстве Symbian.

Когда вы нажмёте кнопку Начать отладку, отладчик запускается в подходящем режиме (простой, терминал или TRK), в зависимости от настроек сборки и запуска для активного проекта. Для запуска отладчика в других режимах воспользуйтесь пунктами меню Отладка.

Простой режим

Для запуска отладчика в простом режиме, нажмите кнопку Начать отладку для активного проекта или выберите Отладка > Начать отладку > Запустить внешнее приложение для отладки. и укажите исполняемый файл.

Режим терминала

Для запуска отладчика в режиме терминала, выберите Проекты > Настройки запуска и включите флажок Запускать в терминале. Затем нажмите кнопку Начать отладку для активного проекта.

Режим подключения

Для запуска приложения в режиме подключения, выберите Отладка > Начать отладку > Подключить к запущенному внешнему приложению. , и затем выберите процесс для подключения по имени или его ID.

Удалённый режим

Удалённый режим использует демона gdbserver, запущенного на удалённой машине.

Для запуска отладчика в удалённом режиме выберите Отладка > Начать отладку > Запустить и подключить к удалённому приложению. .

Режим ядра

Режим ядра доступен только в Unix. Он отлаживает аварийно завершившиеся процессы с использованием файлов ядра (аварийные дампы), которые генерируются, если такая опция включена.

Для включения сохранения файлов ядра, введите следующую команду в командной строке в которой будет запущено приложение:

Для запуска отладчика в режиме ядра выберите Отладка > Начать отладку > Подключить к дампу. .

Режим Post-Mortem

Режим post-mortem доступен только на Windows где установлены инструменты отладки для Windows.

Программа установки Qt Creator спросит, хотите ли вы зарегистрировать Qt Creator как post-mortem отладчик. Для изменения этой настройки выберите Инструменты > Параметры. > Отладчик > Общее > Use Creator for post-mortem debugging.

Вы можете запустить отладчик в режиме post-mortem если приложение аварийно завершится в Windows. Нажмите в отображаемом операционной системой Windows сообщении об ошибке кнопку Debug in Qt Creator.

Режим TRK

Режим TRK это особый режим, доступный только для Symbian. Он отлаживает процессы запущенные на устройстве Symbian с использованием запущенного на устройстве приложения App TRK .

Для запуска отладчика в режиме TRK откройте проект, в качестве цели выберите Symbian и нажмите кнопку Начать отладку.

Для получения дополнительной информации о настройке проектов для Symbian смотрите Настройка окружения разработки для Symbian.

Читайте также:  Свойства предыдущие версии windows
Оцените статью