Проблемы с получением gprof для чтения вывода gmon.out из приложения отладки Qt - PullRequest
2 голосов
/ 08 февраля 2012

Я пытаюсь профилировать приложение окна Qt, которое я разрабатываю, и ознакомился с методами для профилирования с помощью gprof. Я успешно настроил проект для компиляции и связывания с флагами -pg, чтобы включить профилирование, и gmon.out выводится каждый раз, когда приложение выполняется. Однако когда я попытался запустить gprof для преобразования файла gmon.out в читаемый текстовый файл, я наткнулся на сообщение об ошибке «gmon.out слишком короток, чтобы быть файлом gmon». Я попытался поискать в Google для решения этой проблемы, но безрезультатно. Кто-то также задавал тот же вопрос здесь, но ответа не было.

Я использую Qt 4.7.4 с Qt Creator 2.3.0 с компилятором mingw на Windows 7 для этого проекта.

Флаги, которые я установил в .pro-файлах:

# Profiler flags
CONFIG += DEBUG
QMAKE_CXXFLAGS_DEBUG += -pg
QMAKE_CXXFLAGS_MT_DBG += -pg
QMAKE_LFLAGS_DEBUG += -pg

Вот как я вызвал gprof из командной строки:

C: \ QtSDK \ mingw \ bin> gprof "C: \ Qt exe \ debug \ QtGUI.exe"> profile.txt

И сообщение об ошибке: gmon.out: файл слишком короткий, чтобы быть файлом gmon

Я также проверил размер файла для gmon.out; он составляет около 520 кб каждый раз, когда я запускаю приложение отладки. Неужели это слишком короткий файл gmon?

1 Ответ

0 голосов
/ 22 февраля 2012

При запуске gprof, если вы опускаете имя выходного файла, gprof принимает имя по умолчанию "gmon.out".Этот файл должен находиться в той же папке, где вы запускаете gprof.

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

Файл gmon.out' file is written in the program's current working directory at the time it exits. This means that if your program calls chdir, the gmon.out 'останется в последнем каталоге, в котором находится ваша программа chdir'd.Если у вас нет разрешения на запись в этот каталог, файл не будет записан.

(от: http://www.cs.utah.edu/dept/old/texinfo/as/gprof.html)

В этом случае вы можете указатьпуть к выходному файлу:

C:\QtSDK\mingw\bin>gprof QtGUI.exe path_to_outfile\gmon.out > profile.txt

Надеюсь, это поможет.

Ciao!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...