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

3. Исполнение программы для порождения данных о профиле

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

Способ, которым вы выполняете программу--переданные аргументы и ввод, который вы ей даете--может иметь драматический эффект в том, какая информация о профиле будет предоставлена. Данные о профиле будут описывать только те части программы, которые активизировались из-за особенностей использованного вами ввода. Например, если первой командой, которую вы ввели в вашу программу, будет команда выхода, то данные о профиле покажут время, затраченное на инициализацию и закрытие программы, но ничего более.

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

Чтобы правильно записать файл `gmon.out', ваша программа обязана завершиться обычным способом: возвратом из `main()' или вызовом `exit()'. Вызов низко-уровневой функции `_exit()' не запишет данные о профиле, так же и аварийное завершение вследствие необрабатываемого (unhandled) сигнала.

Файл `gmon.out' записывается в *текущем рабочем директории* программы в момент выхода. Это значит, что если ваша программа называется `chdir' (CHange DIRectory--сменить текущий директорий), то `gmon.out' будет оставлен в последнем директории, который сменит ваша программа (в оригинале: "... in the last directory your program `chdir''d to."). Если вы не имеете прав доступа на запись в этот директорий, то файл не будет записан. Вы даже можете получить сообщение об ошибке, если такое случится. (Мы не изменяли ответственную за это часть Unix; когда дойдет до этого, мы сделаем сообщение об ошибке более точным (исчерпывающим)).


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