Вперед Назад Содержание

4. Обзор команд `gprof'

После получения файла `gmon.out' с данными о профиле, вы можете запустить `gprof', чтобы проинтерпретировать информацию из него. Программа `gprof' выводит простой профиль и граф вызовов на стандартный вывод. Обычно вы будете перенаправлять (redirect) вывод `gprof' в файл, используя `>'.

Вы запускаете `gprof' командой типа

gprof ОПЦИИ [ИСПОЛНЯЕМЫЙ-ФАЙЛ [ФАЙЛЫ-ДАННЫХ-О-ПРОФИЛЕ...]] [> ФАЙЛ-ВЫВОДА]
где квадратные скобки обозначают необязательные (опциональные) аргументы.

Если вы не указываете имя исполняемого файла, то принимается `a.out' по умолчанию. Если вы не задаете имя файла данных о профиле, то принимается `gmon.out' по умолчанию. Если любой из файлов оказывается в неверном формате или если файл данных о профиле оказывается не принадлежащим этому исполняемому файлу, то выводится сообщение об ошибке.

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

Следующие опции могут быть использованы для выборочного включения или исключения функций в выводе `gprof':

`-a'

Опция `-a' указывает `gprof' подавить вывод статически объявленных функций. (Это функции, имена которых не перечислены, как глобальные и которые невидимы вне файла/функции/блока, где они были определены). Время, затраченное на исполнение этих функций, вызовы их и из них, и т.д. будут указаны для функции, которая вызывалась непосредственно перед ними во время исполнения. Эта опция влияет и на простой профиль, и на граф вызовов.

`-D'

Опция `-D' указывает `gprof' игнорировать символы (имена), которые не известны, как функции. Эта опция выдает более точные данные о профиле в системах, которые это поддерживают (например, Solaris и HPUX).

`-e ИМЯ_ФУНКЦИИ'

Опция `-e ИМЯ_ФУНКЦИИ' указывает `gprof' не выводить информацию о функции ИМЯ_ФУНКЦИИ (и всех, вызванных из нее...) в граф вызовов. Функция будет показана, как вызванная из других функций, но ее индекс будет выводиться как `[нет]' (`[not printed]'). Может быть указана более, чем одна опция `-e'; только одно ИМЯ_ФУНКЦИИ может быть задано с каждой опцией `-e'.

`-E ИМЯ_ФУНКЦИИ'

Опция `-E ИМЯ_ФУНКЦИИ' работает так же, как и опция `-e', но время, затраченное на выполнение функции (и всех ее подпрограмм, которые больше ниоткуда не вызываются), не будет использовано для вычисления процента времени для графа вызовов. Может быть указана более, чем одна опция `-E'; только одно ИМЯ_ФУНКЦИИ может быть задано с каждой опцией `-E'.

`-f ИМЯ_ФУНКЦИИ'

Опция `-f ИМЯ_ФУНКЦИИ' указывает `gprof' ограничить граф вызовов функцией ИМЯ_ФУНКЦИИ и вызываемыми из нее (и вызываемыми из них...). Может быть указана более, чем одна опция `-f'; только одно ИМЯ_ФУНКЦИИ может быть задано с каждой опцией `-f'.

`-F ИМЯ_ФУНКЦИИ'

Опция `-F ИМЯ_ФУНКЦИИ' работает так же, как и опция `-f', но для определения общего времени и процента времени в графе вызовов будет использовано только время, затраченное на выполнение функции и всех ее подпрограмм (и их подпрограмм...). Может быть указана более, чем одна опция `-F'; только одно ИМЯ_ФУНКЦИИ может быть задано с каждой опцией `-F'. Опция `-F' перекрывает опцию `-E'.

`-k ОТ... ДО...'

Опция `-k' исключает из профиля все дуги (arcs) от функции ОТ до функции ДО.

`-v'

Флаг `-v' указывает `gprof' вывести номер текущей версии и завершиться.

`-z'

Если вы задаете опцию `-z', то `gprof' вносит все функции в простой профиль, даже если они никогда не вызывались и поэтому не имеют затраченного на их выполнение времени. Эта опция полезна в соединении с опцией `-c' для обнаружения никогда не вызываемых функций.

Порядок, в котором вы укажете эти опции, не имеет значения.

Заметим, что только одно ИМЯ_ФУНКЦИИ может быть указано с каждой из опций `-e', `-E', `-f' или `-F'. Для задания более, чем одной функции, используйте эти опции столько раз, сколько нужно. Например, команда:

gprof -e boring -f foo -f bar myprogram > gprof.output
внесет в граф вызовов все функции, которые вызывались из `foo' и из 'bar' и не вызывались из `boring'.

Некоторые другие полезные опции `gprof':

`-b'

Если указана опция `-b', `gprof' не будет выводить подробные пояснения ко всем полям в таблицах. Эта опция полезна, если вы намерены распечатать вывод или вас утомило созерцание пояснений.

`-c'

Опция `-c' указывает, что граф вызовов статических функций программы будет создан эвристически, просмотром области кода в объектном файле. Статические вызывающие и вызываемые функции отмечаются счетчиком вызовов, равным 0.

`-d НОМЕР'

Опция `-d NUM' специфицирует опции отладки.

`-s'

Опция `-s' указывает `gprof' обобщить информацию из прочитанных файлов данных о профиле и вывести ее в файл данных о профиле `gmon.sum', который будет содержать всю информацию из файлов данных о профиле, прочитанных `gprof'. Файл `gmon.sum' может быть указан, как один из исходных файлов; эффектом этого будет слияние данных из прочих исходных файлов в `gmon.sum'. *См. Оценка ошибки::.

В конце концов вы сможете запустить `gprof' снова без опции `-s' для анализа собранных в `gmon.sum' данных.

`-T'

Опция -T' указывает `gprof' оформлять свой вывод в "традиционном" стиле BSD.

`--function-ordering'

Опция `--function-ordering' указывает `gprof' выводить функции в том порядке, в котором они расположены в исполняемом файле. Эта опция может упорядочить функции таким образом, что улучшится подкачка страниц памяти и поведение кэша для программы в системах, которые поддерживают произвольный порядок функций в исполняемом файле.

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

`--file-ordering MAP_FILE'

Опция `--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.

Вперед Назад Содержание