MONITOR(3C) MONITOR(3C)
НАЗВАНИЕ
monitor - подготовка временного профиля программы
СИНТАКСИС
#include
void monitor (lowpc, highpc, buffer, bufsize, nfunc)
int (*lowpc)( ), (*highpc)( );
WORD *buffer;
int bufsize, nfunc;
ОПИСАНИЕ
В выполняемую программу, полученную с помощью команды
cc -p, автоматически вставляются вызовы функции monitor
с подразумеваемыми значениями аргументов; явно эту
функцию следует вызывать только тогда, когда нужно
иметь возможность тонкого управления профилированием.
Функция monitor представляет собой интерфейс к систем-
ному вызову profil(2). Аргументы lowpc и highpc являют-
ся адресами двух функций; buffer - это адрес (пользова-
тельского) массива элементов типа WORD (тип определен
во включаемом файле ), длина массива задается
аргументом bufsize. Функция monitor организует запись в
массив buffer гистограммы значений периодически опраши-
ваемого счетчика команд, а также счетчиков числа вызо-
вов некоторых функций. Диапазон фиксируемых значений
счетчика команд простирается от lowpc (нижний предел)
до highpc (диапазон кончается перед этим адресом). Ниж-
ний предел lowpc должен быть отличен от нуля. Храниться
может не более nfunc счетчиков вызовов; фиксируются вы-
зовы только тех функций, которые были откомпилированы с
опцией профилирования -p команды cc(1).
Чтобы результаты измерений давали представление о ре-
альной ситуации, особенно когда есть небольшие, но час-
то используемые функции, надо, чтобы размер массива
buffer был сравнимым с отслеживаемым диапазоном адре-
сов.
Для подготовки временного профиля всей программы доста-
точно следующей конструкции:
extern etext;
...
monitor ((int (*)()) 2, &etext, buf, bufsize, nfunc);
Объект etext лежит непосредственно за сегментом команд
[см. end(3C)].
Чтобы прекратить профилирование и записать результаты,
следует использовать обращение
monitor((int (*)()) 0, 0, 0, 0, 0);
Затем для просмотра результатов можно воспользоваться
командой prof(1).
С помощью переменной окружения PROFDIR можно управлять
именем выходного файла функции monitor. Если такой пе-
ременной нет, то в текущем каталоге создается файл
mon.out. Если переменная существует, но значения у нее
нет, то monitor не профилирует программу и не создает
выходной файл. В противном случае создается выходной
файл с именем $PROFDIR/идентификатор_процесса.mon.out.
При автоматическом вызове процедуры monitor после ком-
пиляции по команде cc -p выходной файл получает имя
$PROFDIR/идентификатор_процесса.имя_программы.
ФАЙЛЫ
mon.out
СМ. ТАКЖЕ
profil(2), end(3C).
cc(1), prof(1) в Справочнике пользователя.
СЮРПРИЗЫ
Форма
$PROFDIR/идентификатор_процесса.mon.out
не работает. Работает автоматическая форма
$PROFDIR/идентификатор_процесса.имя_программы
|