Использование Intel Vtune для профилирования приложения из Qt Creator

Я хочу профилировать приложение из QtCreator с помощью Vtune на Windows 7. Но Vtune в основном сделан для приложений Visual Studio, поэтому я должен сделать связь между именами моей функции и инструкцией в сборке релиза.
На самом деле у меня есть только псевдо-имена func @ address в горячих точках, его нельзя использовать.

Изучая «Начало работы» от Intel Vtune, я обнаружил, что Я должен включить информацию отладки в моей сборке релиза, но как это сделать в QtCreator?

Из файла «Использование отладочной информации»:

Чтобы предоставить точные данные о производительности и включить анализ источников,
Intel® VTune ™ Amplifier требует отладочную информацию для двоичного файла
файлы это анализирует. Если он не находит отладочную информацию в
двоичные файлы, VTune Amplifier статически определяет функцию
границы и назначает адреса горячих точек для сгенерированных псевдо-имен
func @ адрес для таких функций.

Если отладочная информация отсутствует, панель Call Stack может не раскрутить
стек вызовов правильно для выборочного анализа и анализа трассировки в пользовательском режиме
типы. Кроме того, в некоторых случаях это может занять значительно больше времени
завершить результаты для модулей, которые не имеют отладки
Информация.

В операционных системах Windows * файлы PDB предоставляют отладочную информацию.
Убедитесь, что ваши системные и прикладные библиотеки / исполняемые файлы имеют
PDB файлы. Скомпилируйте свою цель с оптимизацией и начните профилирование
его производительность.

По умолчанию Microsoft Visual Studio * IDE не создает PDB
информация в режиме Release. Для лучших результатов с VTune
Усилитель, включить генерацию символов вручную. Для системных библиотек,
используйте Microsoft * Symbol Server для загрузки необходимых файлов PDB
с веб-сайта Microsoft *. Выполните следующие действия, чтобы
VTune Amplifier использует отладочную информацию как для системы, так и для вашей собственной
библиотеки.

Я пробую некоторые методы, такие как: -edit file.pro, чтобы изменить сборку релиза

QMAKE_CXXFLAGS_RELEASE += -g
QMAKE_CFLAGS_RELEASE += -g
QMAKE_LFLAGS_RELEASE =
  • профиль отладочной сборки.

но это ничего не меняет, у меня все еще не напечатано имя функции

Любой вклад очень ценится.

1

Решение

Да, для VTune (или других подобных инструментов профилирования) вам нужна «сборка релиза» (т.е. оптимизация включена) с включенной отладочной информацией. QTCreator по умолчанию не создает такую ​​конфигурацию релиза + отладки.

В случае набора инструментов для компилятора Windows MS это означает, что вы должны дополнение Выпуск конфигурации с дополнительный Параметры компиляции / Zi и / DEBUG.

Для распространения этих дополнительных опций в QTCreator используйте следующие шаги (см. также скриншот ниже):

  • Откройте файл проекта qtcreator (***. Pro) в редакторе
  • Добавьте следующие строки перед «TARGET»

QMAKE_CXXFLAGS+=-Zi
QMAKE_LFLAGS+=/DEBUG

  • Теперь при создании проекта эти параметры будут автоматически применяться как к конфигурации Debug, так и к конфигурации Release (Debug уже имеет ее, поэтому это не должно быть проблемой).
  • Теперь вы можете профилировать ваш релиз сборки с помощью VTune

Еще несколько незначительный заметки:

  1. Аналогичная процедура (с QMAKE_CXXFLAGS) также применима к MinGW / GCC или любым другим цепочкам инструментов с соответствующими параметрами (-g, -gdwarf-2 и т. Д.)
  2. Если вы не хотите влиять на все конфигурации, есть прагмы проекта QT, позволяющие обусловливать QMAKE_CXXFLAGS между конфигурациями
  3. Если вы хотите профилировать внутренние библиотеки стандартных библиотек QT, то вам дополнительно придется связываться с отладочными версиями библиотек QT, настраивая QMAKE_LFLAGS с дополнительными опциями, такими как / DQT ***; Вы можете узнать их, посмотрев окно «Вывод компилятора» QT при построении конфигураций Debug по умолчанию.

QT создатель Скриншот

3

Другие решения

  1. Убедитесь, что вы используете VTun eupdate 7 или более позднюю версию.
  2. Если вы используете стандартный набор инструментов MinGW, убедитесь, что вы используете формат отладки DWARF, передав -gdwarf-2 (или -g3 -gdwarf-2)
  3. Если вы используете MSVC toolchain, то Zi должен быть передан компилятору, а / DEBUG — компоновщику.
0

По вопросам рекламы [email protected]