Qt creator valgrind настройка

Using valgrind with Qt Creator

Template:ArticleMetaData Template:FeaturedArticle This article will show you how you can use valgrind on Linux to find memory leaks in your Qt based application from within Qt Creator.

valgrind is a low level tool that can do many useful memory-related things, of which we will focus on locating memory leaks — especially useful for long running processes and those that create and destroy a lot of objects. To do this, valgrind tracks the memory allocation/deallocations your application does and generates reports about places that might be losing memory.


Install valgrind [ edit ]

Almost all Linux distributions include valgrind, but usually do not install it by default. Just select valgrind from your package manager (shown in Kubuntu below) to install it.

If you prefer to use the console, all you need to do on a deb based Linux is

sudo apt-get install valgrind

About 50 MB later, you will have valgrind installed

Install the (Nokia) Qt SDK or Qt Creator [ edit ]

If you do not already have it, you can install the Nokia Qt SDK, but the procedure below will work with any install of Qt Creator. The approach outlined in this article can be used for desktop, Maemo and Simulator targets.

Open project [ edit ]

Create or open an existing project. Here an example of simple application is created. Notice how this example intentionally leaks a QLabel object every time the button is pressed.

Create run target [ edit ]

In order to use valgrind, a special run target needs to be added to the project. Click the projects icon and then the ‘run’ section of the target you wish to debug. You will see something like

Now click ‘add’ and specify a new target that looks like the following

The complex argument line in text form for copy-pasting:

-q —tool=memcheck —leak-check=full —leak-resolution=low —suppressions=Qt47supp.txt ./[your-app-target-name]

As an initial default Qt4.7 suppression file (see below) for simulator targets you can use File:Qt47supp.txt. Of course, depending on what modules or additional libraries use, you will want to extend it.

Running the application [ edit ]

You will see that now in your target window you have a new run configuration selectable

Make sure you’re adding/selecting valgrind in the debug build, as it will not be able to find symbols and code lines in a release build. Upon running the application, there will be a lot of output from valgrind, intertwined with the actual output from your application. Notice that valgrind will print most of its finding when you exit the application. If you followed the article, you’ll see a large amount of valgrind output.

Interpreting the results [ edit ]

You will soon realize that valgrind’s output can easily become overwhelming. One of the keys of dealing with valgrind efficiently is using good suppression files. Using these files avoids warnings that are false alarms or located in code outside of ours. Generally, you should pay no attention to valgrind complaints about errors in glibc or Qt — it is a common mistake to start valgrind without suppression files and then think that everything is leaking, but that is generally just the side-effect of lower level libraries deallocating memory after valgrind. Thus, to be able to focus on actual leaks in our code, a suppression file needs to be generated that will bring down the valgrind output to a manageable size containing only errors in the code at hand.

Читайте также:  Q menu настройки аудио

As an initial default Qt4.7 suppression file for simulator targets you can use File:Qt47supp.txt. Of course, depending on what modules or additional libraries use, you will want to extend it.

Now, save the suppression file in the build directory and re-run the application. Now you can easily spot the memory leak report with a precise source file and location where the action that caused the leak occurred.

Qt making your life easier [ edit ]

An important note is that in many cases you can prevent memory leaks just by using Qt’s smart pointer classes, QScopedPointer and QSharedPointer being of particular interest for most common use-cases.

The QObject class also has mechanisms that help avoid dangling pointers and memory leaks. When a QObject is deleted, it emits a destroyed() signal and also automatically calls the destructor’s of its child objects.

Summary [ edit ]

The above should start you down path of finding leaks in your Qt applications. Should you require more detailed reports or want to find out more about what valgrind can do for you, check the Valgrind manual.


Qt Documentation

Using Valgrind Code Analysis Tools

Qt Creator integrates Valgrind code analysis tools for detecting memory leaks and profiling function execution. You must download and install them separately to use them from Qt Creator.

You can run the Valgrind tools either locally on the development host or remotely on another host. You can use them to analyze both applications for which you set up a project in Qt Creator and applications for which you do not have a project.

Valgrind tools are supported locally only on Linux and macOS. However, according to Valgrind.org, support on macOS 10.8 and 10.9 is experimental and mostly broken. You can run the tools on a remote Linux machine or device from any development host.

To run the Valgrind tools to analyze an application for which you have a project, open the project in Qt Creator and select the kit to run the project. The kit specifies whether the Valgrind tools are run locally or remotely.

For more information about analyzing applications for which you do not have a project, see Running Valgrind Tools on External Applications.

To select options for the Valgrind tools, select Tools > Options > Analyzer. You can override the general settings for each project in the Run Settings for the project.

The following sections describe how to use the Valgrind tools:

В© 2020 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.



In this section we show how to use the profiling tool valgrind in QtCreator. The version used is QtCreator 2.3 (also tested on version 4.3.2).

Numerous tutorials already exist, the purpose of this page is to provide a quick answer to the new user of Sofa and QtCreator.

You can access the official documentation for using Valgrind in Qt here.

You can access valgrind documentation here.


How to use Valgrind in QtCreator to detect memory leaks


Valgrind must be installed, as well as the valgrind qt creator. If the «valgind» plugin is not loaded (menu «help/about plugins»), check/activate the plugin «RemoteLinux» in «Device support», then reload qtcreator.

Читайте также:  И новых друзей изменить настройки денежные переводы

Graphic Tutorial

  • Open Sofa in QtCreator, choose a debug version and in the left tool bar choose Analyze

  • Then choose Valgrind Memory Analyzer as profiling tool

  • Launch the simulation clicking this button : File:Qtcreator-analyze-start-button.png. After a time do not hesitate to stop it if nothing happens, maybe there are too mistakes.

Reduce uninteresting error using suppression file

Go to tools—options—analyzer.

After the executable valgrind, add the following option

After each error, valgrind will print out the suppression lines to add in a suppression file filename.supp, if you want to skip the error.

If you want valgrind to use your suppression file go to tools—options—analyzer—suppression files—add.


Урок №1. Введение в Qt и установка Qt Creator

Обновл. 18 Янв 2020 |

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

Введение в Qt

Qt является кроссплатформенным (не зависящим от платформы/ОС) фреймворком для разработки приложений на языке С++. С помощью Qt были разработаны такие известные приложения, как: KDE, Opera, Google Earth и Skype. Впервые Qt был опубликован в мае 1995 года.

Qt5 подразумевает двойное лицензирование, а это означает, что Qt может быть использован в некоммерческих целях для создания приложений с открытым исходным кодом, а также как лицензия для коммерческих клиентов. За счёт использования собственного фреймворка и мощного инструментария Qt позволяет быстро и удобно создавать собственные кроссплатформенные приложения. Кроме того, команды разработчиков получают возможность работать на разных платформах, используя при этом общие инструменты для разработки и отладки. Весь инструментарий Qt с открытым исходным кодом вы можете найти на сайте qt.io.

Изначально Qt был разработан Норвежской компанией по разработке программного обеспечения Trolltech. В 2008 году компанию приобрела Nokia. Спустя четыре года в августе 2012 программные технологии Qt выкупила финская компания-разработчик Digia. Сейчас Qt развивается компанией QT Company, которая являющейся дочерней компанией Digia, и как проект Qt под открытым исходным кодом, с участием отдельных разработчиков и фирм.

Установка Qt Creator в Linux

Шаг №1: Мы будем устанавливать IDE с открытым исходным кодом. Для этого переходим по ссылке и выбираем самую последнюю версию Qt 5.13:

В этих уроках используется операционная система Linux (Debian 9.x 64-bit), поэтому мы скачиваем qt-opensourse-linux-x64-5.13.0.run , но вы также можете использовать соответствующие файлы Qt для Windows или Mac:

После окончания загрузки переходим в папку с необходимым нам файлом, нажимаем по нему правой кнопкой мыши и выбираем «Свойства». В закладке «Основные» видим «Имя», «Тип», «Размер файла», а также наименование родительской папки:

Переходим на вкладку «Права» и ставим галочку в поле «Разрешить выполнение файла как программы»:

Закрываем «Свойства» и запускаем программу.

Шаг №2: На следующем этапе установщик сообщает, что нам предоставлена версия с открытым исходным кодом Qt 5.13.0. Дальнейшая установка Qt предполагает регистрацию в Qt и создание Qt Account, который предоставляет доступ ко всем возможностям Qt. Кроме того, данное действие необходимо для проверки лицензии (коммерческая/некоммерческая). Если у вас уже есть учётная запись в Qt Account, то используйте кнопку «Next».

Если учётной записи в Qt Account у вас ещё нет, то её можно создать сейчас: для этого перейдите по соответствующей ссылке в установщике, и вы будете перенаправлены на сайт qt.io в соответствующий раздел, или просто используйте кнопку «Next» — вы сможете это сделать в следующем шаге:

Читайте также:  Специалист по настройке crm

Шаг №3: Здесь необходимо ввести логин и пароль от Qt Account или создать Qt Account, если его ещё нет. Кнопка «Next» переводит нас на следующий этап:

Добро пожаловать в настройки Qt 5.13.0! Для перехода к следующему шагу нажимаем «Далее»:

Шаг №4: Выбираем каталог для установки Qt 5.13.0. Обратите внимание, адрес каталога указывается латинскими буквами (без кириллицы) и без пробелов! После того, как выбрали каталог, нажимаем «Далее»:

Шаг №5: Выбираем компоненты, которые хотим установить. Если на данном этапе нет уверенности в выборе конкретных компонентов, то добавление и удаление можно будет сделать позже, после установки программы:

Шаг №6: Принимаем лицензионное соглашение:

И нажимаем на кнопку «Установить»:

Для завершения установки нажимаем «Завершить». После завершения загрузки Qt Creator запустится самостоятельно (для этого необходимо по умолчанию оставить галочку в поле «Launch Qt Creator»):

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

Поздравляем! Qt Creator установлен.

Установка через командную строку в Linux

Ещё одним альтернативным и простым способом установки Qt Creator в Linux на основе Debian является установка из пакетов. Если при работе с Linux вы используете терминал, то перед скачиванием и установкой Qt Creator программа запросит пароль sudo пользователя. Только после этого начнётся скачивание и извлечение файлов. Обычно пакты Linux не содержат последней версии Qt и их необходимо обновить. Ниже приведен алгоритм действий, позволяющий за 4 шага установить Qt Creator через терминал.

Шаг №1. Обновление:

$ sudo apt update

Шаг №2. Скачивание и установка Qt:

$ sudo apt install qt5-default

Шаг №3. Установка Qt Creator:

$ sudo apt install qtcreator

Шаг №4. Исходники:

$ sudo apt install qtbase5-examples qtdeclarative5-examples

Установка Qt Creator в Windows

Перво-наперво нам нужно скачать установочный пакет Qt. Вы можете это сделать, обратившись к официальному сайту qt.io. Либо же воспользоваться альтернативным вариантом и скачать с какого-нибудь «зеркала», например c этого (полный список всех «зеркал» находится здесь):

Нажимаем на official_releases/ и переходим к online_installers/ :

Нажимаем на online_installers/ и скачиваем файл qt-unified-windows-x86-online.exe :

Запустив скачанный файл, видим перед собой приветствие «Qt Online Installer». Нажимаем Next :

Далее у нас спросят о наличии Qt-аккаунта. Можно смело нажимать Skip и двигаться дальше:

Затем снова Далее :

Теперь нам нужно указать путь установки Qt. Для простоты я выбрал C:\Qt :

На следующем шаге нам нужно выбрать набор компиляторов, которыми мы будем пользоваться в наших уроках. Я предлагаю ограничиться выбором пакета MinGW 7.3.0 32-bit , а остальные метки поставить так, как указано на скриншоте ниже:

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

Создание проекта

Вначале нам необходимо создать проект. Сразу скажу, что наша программа будет консольным приложением. Для этого выберите Файл > Создать файл или проект… или можно воспользоваться сочетанием клавиш Ctrl+N :

Перед вами появится «Мастер настройки проектов». В левой колонке отметьте пункт Приложение , а затем в правой — Консольное приложение Qt :

На следующем шаге нужно будет указать имя для нашей будущей программы и папку, где будут располагаться файлы проекта. У меня это My_QtApplication и C:\dev\Qt_Project соответственно:

На следующем шагу без изменений, поэтому просто нажимаем кнопку Далее :

Теперь нам нужно выбрать набор компиляторов, который мы будем использовать для сборки своего проекта. Я настоятельно вам рекомендую выбрать Desktop Qt 5.13.0 MinGW 32-bit (сняв при этом отметки с остальных, если они у вас есть):

На последнем шагу нажимаем Завершить :

Теперь вы можете увидеть автоматически сгенерированный Qt-проект консольного приложения. Давайте рассмотрим его подробнее: