После получения файла `gmon.out' с данными о профиле, вы можете запустить `gprof', чтобы проинтерпретировать информацию из него. Программа `gprof' выводит простой профиль и граф вызовов на стандартный вывод. Обычно вы будете перенаправлять (redirect) вывод `gprof' в файл, используя `>'.
Вы запускаете `gprof' командой типа
gprof ОПЦИИ [ИСПОЛНЯЕМЫЙ-ФАЙЛ [ФАЙЛЫ-ДАННЫХ-О-ПРОФИЛЕ...]] [> ФАЙЛ-ВЫВОДА]
где квадратные скобки обозначают необязательные (опциональные) аргументы.
Если вы не указываете имя исполняемого файла, то принимается `a.out' по умолчанию. Если вы не задаете имя файла данных о профиле, то принимается `gmon.out' по умолчанию. Если любой из файлов оказывается в неверном формате или если файл данных о профиле оказывается не принадлежащим этому исполняемому файлу, то выводится сообщение об ошибке.
Вы можете указать более, чем один файл данных о профиле, введя их имена после имени исполняемого файла; тогда статистика из всех файлов данных складывается.
Следующие опции могут быть использованы для выборочного включения или исключения функций в выводе `gprof':
Опция `-a' указывает `gprof' подавить вывод статически объявленных функций. (Это функции, имена которых не перечислены, как глобальные и которые невидимы вне файла/функции/блока, где они были определены). Время, затраченное на исполнение этих функций, вызовы их и из них, и т.д. будут указаны для функции, которая вызывалась непосредственно перед ними во время исполнения. Эта опция влияет и на простой профиль, и на граф вызовов.
Опция `-D' указывает `gprof' игнорировать символы (имена), которые не известны, как функции. Эта опция выдает более точные данные о профиле в системах, которые это поддерживают (например, Solaris и HPUX).
Опция `-e ИМЯ_ФУНКЦИИ' указывает `gprof' не выводить информацию о функции ИМЯ_ФУНКЦИИ (и всех, вызванных из нее...) в граф вызовов. Функция будет показана, как вызванная из других функций, но ее индекс будет выводиться как `[нет]' (`[not printed]'). Может быть указана более, чем одна опция `-e'; только одно ИМЯ_ФУНКЦИИ может быть задано с каждой опцией `-e'.
Опция `-E ИМЯ_ФУНКЦИИ' работает так же, как и опция `-e', но время, затраченное на выполнение функции (и всех ее подпрограмм, которые больше ниоткуда не вызываются), не будет использовано для вычисления процента времени для графа вызовов. Может быть указана более, чем одна опция `-E'; только одно ИМЯ_ФУНКЦИИ может быть задано с каждой опцией `-E'.
Опция `-f ИМЯ_ФУНКЦИИ' указывает `gprof' ограничить граф вызовов функцией ИМЯ_ФУНКЦИИ и вызываемыми из нее (и вызываемыми из них...). Может быть указана более, чем одна опция `-f'; только одно ИМЯ_ФУНКЦИИ может быть задано с каждой опцией `-f'.
Опция `-F ИМЯ_ФУНКЦИИ' работает так же, как и опция `-f', но для определения общего времени и процента времени в графе вызовов будет использовано только время, затраченное на выполнение функции и всех ее подпрограмм (и их подпрограмм...). Может быть указана более, чем одна опция `-F'; только одно ИМЯ_ФУНКЦИИ может быть задано с каждой опцией `-F'. Опция `-F' перекрывает опцию `-E'.
Опция `-k' исключает из профиля все дуги (arcs) от функции ОТ до функции ДО.
Флаг `-v' указывает `gprof' вывести номер текущей версии и завершиться.
Если вы задаете опцию `-z', то `gprof' вносит все функции в простой профиль, даже если они никогда не вызывались и поэтому не имеют затраченного на их выполнение времени. Эта опция полезна в соединении с опцией `-c' для обнаружения никогда не вызываемых функций.
Порядок, в котором вы укажете эти опции, не имеет значения.
gprof -e boring -f foo -f bar myprogram > gprof.output
внесет в граф вызовов все функции, которые вызывались из `foo' и из
'bar' и не вызывались из `boring'.
Некоторые другие полезные опции `gprof':
Если указана опция `-b', `gprof' не будет выводить подробные пояснения ко всем полям в таблицах. Эта опция полезна, если вы намерены распечатать вывод или вас утомило созерцание пояснений.
Опция `-c' указывает, что граф вызовов статических функций программы будет создан эвристически, просмотром области кода в объектном файле. Статические вызывающие и вызываемые функции отмечаются счетчиком вызовов, равным 0.
Опция `-d NUM' специфицирует опции отладки.
Опция `-s' указывает `gprof' обобщить информацию из прочитанных файлов данных о профиле и вывести ее в файл данных о профиле `gmon.sum', который будет содержать всю информацию из файлов данных о профиле, прочитанных `gprof'. Файл `gmon.sum' может быть указан, как один из исходных файлов; эффектом этого будет слияние данных из прочих исходных файлов в `gmon.sum'. *См. Оценка ошибки::.
В конце концов вы сможете запустить `gprof' снова без опции `-s' для анализа собранных в `gmon.sum' данных.
Опция -T' указывает `gprof' оформлять свой вывод в "традиционном" стиле BSD.
Опция `--function-ordering' указывает `gprof' выводить функции в том порядке, в котором они расположены в исполняемом файле. Эта опция может упорядочить функции таким образом, что улучшится подкачка страниц памяти и поведение кэша для программы в системах, которые поддерживают произвольный порядок функций в исполняемом файле.
Точные детали того, как заставить сборщик (линкер) поместить функции в нужном порядке, зависят от системы и не рассматриваются в данном руководстве.
Опция `--file-ordering MAP_FILE' указывает `gprof' выводить функции в том порядке, в котором они встретились сборщику (линкеру) в строке .o-файлов. Эта опция может упорядочить функции таким образом, что улучшится подкачка страниц памяти и поведение кэша для программы в системах, которые не поддерживают произвольный порядок функций в исполняемом файле.
В высшей степени рекомендуется с этой опцией использовать опцию `-a'.
Аргумент MAP_FILE--это полный путь к файлу, в котором перечислены имена функций в соответствии с их расположением в объектном файле. Формат этого файла такой же, как и выход программы `nm'.
c-parse.o:00000000 T yyparse
c-parse.o:00000004 C yyerrflag
c-lang.o:00000000 T maybe_objc_method_name
c-lang.o:00000000 T print_lang_statistics
c-lang.o:00000000 T recognize_objc_keyword
c-decl.o:00000000 T print_lang_identifier
c-decl.o:00000000 T print_lang_type
...
GNU `nm' `--extern-only' `--defined-only' `-v' `--print-file-name'
может быть использована для создания MAP_FILE.