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/идентификатор_процесса.имя_программы