LIBDVM~1 (1158353), страница 4

Файл №1158353 LIBDVM~1 (Раздаточные материалы) 4 страницаLIBDVM~1 (1158353) страница 42019-09-18СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 4)

EveryEventCheckCodeMem - признак контроля области памяти с программным кодом по каждому трассируемому событию.

EveryTraceCheckCodeMem - признак контроля области памяти с программным кодом при каждом обращении к функциям вывода трассировки, рассмотренным в п.7.3. Данный контроль включает в себя контроль, задаваемый параметром EveryEventCheckCodeMem.

7.3.Функции вывода информации в потоки трассировки.

Вывод информации в потоки трассировки и в стандартный поток stderr осуществляется с помощью следующих функций (параметр format и следующие за ним параметры аналогичны соответствующим параметрам функции printf библиотеки языка C).

int tprintf(char *format, ... );

Функция осуществляет вывод информации в открытые потоки трассировки. Возвращается число выведенных символов.

int pprintf(int prefix, char *format, ... );

Функция выводит информацию в открытые потоки трассировки. Кроме того, вывод производится в потоки, предназначенные для вывода информационных сообщений системы поддержки (параметр prefix равен 0 или 1), либо в потоки, предназначенные для вывода сообщений об ошибках (prefix равен 2 или 3) (см.п.8).

При значении параметра prefix, равном 1 или 3, вывод осуществляет каждый процессор решающего поля, предваряя заданную информацию своим номером (см.п.1.3 и п.4). Если значение prefix равно 0 или 2, то вывод информации в потоки трассировки осуществляет каждый процессор решающего поля, а в остальные потоки - только главный процессор (см.п.4). Предварительный вывод номера процессора в этом случае не производится.

Возвращается число выведенных символов.

int vtprintf(int prefix, char *format, va_list arg_ptr);

Функция выводит информацию в открытые потоки трассировки. При значении параметра prefix, равном 1 или 3, выводу информации в поток трассировки, совпадающий с потоком stderr, предшествует вывод номера текущего процессора. Для вывода информации в поток stderr без номера процессора значение prefix должно быть равно 0 или 2. Значения параметра prefix 0 и 1 используются для вывода информационных сообщений, а 2 и 3 - для вывода сообщений об ошибках (см.п.8).

Возвращается число выведенных символов.

void dvm_trace(int number, char *format, ... );

Функция выводит информацию о состоявшемся событии с номером number в открытые потоки трассировки. Выводимая информация состоит из:

  • стандартной информации для события трассировки с номером number;

  • дополнительной информации, заданной параметром format и последующими параметрами, если таковые имеются.

Стандартная информация включает в себя:

  • имя события трассировки с номером number;

  • время выполнения программы, прошедшее с момента предыдущего фактического вывода информации в потоки трассировки с помощью функции dvm_trace;

  • имя файла и номер строки, вместе определяющие точку произошедшего события с номером number.

Фактический вывод информации в потоки трассировки происходит лишь в том случае, если событие с номером number включено.

Вывод дополнительной информации осуществляется только в расширенном режиме трассировки или при задании такого режима отдельно для события с номером number.

Имя файла и номер строки, определяющие точку произошедшего события, сообщаются программе трассировки макровызовом DVM_CALL. Название макроса проистекает из того, что все события трассировки, за несколькими исключениями, - это вызовы функций системы поддержки. Если событие произошло внутри системы поддержки и событием является обращение к функции, то используется макровызов RTL_CALL. Макровызовы DVM_CALL и RTL_CALL должны исполнительно предшествовать событию и максимально к нему приближены (по расположению в файле с программой). Таким образом, трассировка событий осуществляется по следующей схеме:

DVM_CALL; (или RTL_CALL;)
..................................
< точка наступления события >
..................................
dvm_trace( ........ );

Трассировка функций системы поддержки организована таким образом, что обращение к dvm_trace происходит внутри трассируемой функции. Наиболее предпочтительным способом использования макровызовов DVM_CALL и DVM_TRACE при трассировке функций является применение операции последовательного вычисления:

( DVM_CALL , < обращение к функции > )

или

( RTL_CALL , < обращение к функции > ) .

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

ЗАМЕЧАНИЕ. Имя файла и номер строки, определяющие точку наступившего события, могут быть сообщены системе поддержки также с помощью функций

long fname_ (char *FileNamePtr, long FileNameLength);

long lnumb_ (long *LineNumberPtr);

FileNamePtr

- указатель на текстовую строку с именем файла.

FileNameLength

- длина строки с именем файла в байтах.

*LineNumberPtr

- номер строки.

При выполнении функции fname_ последнему байту с именем файла будет присвоено нулевое значение. Функции возвращают нулевые значения.

Данные функции могут быть использованы препроцессорными программами для "привязки" точки предполагаемого события к своему входному тексту.

Отметим, что последовательность обращений

long line;
..............................
..............................
line = __LINE__ ;
fname_ ( __FILE__ ,
strlen(__FILE__)+1 ) ;
lnumb_ ( &line ) ;

эквивалентна макровызову

DVM_CALL ; .

void eprintf(char *FileNamePtr, int Line, char *format, ... );

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

После вывода информации, заданной параметром format и последующими параметрами (если таковые имеются), выводятся строка, заданная указателем FileNamePtr и целое число, заданное параметром Line. Предполагается, что выводимые строка и число - это имя файла и номер строки, содержащие данное обращение к функции eprintf, то есть, что обращение к eprintf имеет вид:

eprintf(__FILE__ , __LINE__ , format , ... );

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

8.О ВЫВОДЕ ИНФОРМАЦИОННЫХ СООБЩЕНИЙ СИСТЕМЫ ПОДДЕРЖКИ И СООБЩЕНИЙ ОБ ОШИБКАХ

Каждое сообщение, выдаваемое системой поддержки в процессе своего функционирования, является либо информационным, либо сообщением об ошибке.

Информационные сообщения выводятся с помощью функций rtl_printf, rtl_mprintf (см.п.1.3), а также функцией pprintf со значением параметра prefix, равным 0 или 1 (см.п.7).

Кроме того, для вывода информационных сообщений в системе поддержки предусмотрена функция iprintf, синтаксически эквивалентная функции printf и возвращающая число выведенных символов:

int rtl_iprintf(char *format, ...);

Информационным сообщением считается также любая трассировочная информация, предназначенная для вывода на видеомонитор.

Вывод сообщений об ошибках осуществляется функциями eprintf и eprintf, а также функцией pprintf со значением параметра prefix, равным 2 или 3 (см.п.7).

Направление и перенаправление потоков, предназначенных для вывода информационных сообщений и сообщений об ошибках, осуществляется с помощью параметров файлов current.par и syspar.* .

Файл current.par является файлом параметров текущего запуска системы поддержки и создается программой запуска системы поддержки в текущей рабочей директории. Он состоит из следующей последовательности строк:

CurrentPar[0]=<параметр>;
CurrentPar[1]=<параметр>;
. . . . . . . . . . . . . . . . . . . . . . . .
CurrentPar[n]=<параметр>;

Расположенными справа от знака '=' параметрами, определяющими вывод информации, могут быть:

  1. +o[<путь, определяющий файл>]

Данный параметр дает указание системе поддержки перевести поток stdout в заданный файл. Если путь, определяющий файл, не задан, то stdout переводится в файл stdout.out .

  1. +e[<путь, определяющий файл>]

Параметр задает перевод потока stderr в заданный файл. Если путь, определяющий файл, не задан, то stderr переводится в файл stderr.out .

  1. +i[<символы, определяющие потоки>]

Данный параметр дает указание системе поддержки направить информационные сообщения в потоки, определяемые заданными символами.

Символами, определяющими потоки, могут быть:

o - поток stdout;

e - поток stderr;

f - файл.

Если задан как символ 'o', так и символ 'e', а потоки stdout и stderr в файлы не переведены, то дублирования информационных сообщений на видеомонитор производиться не будет. Если не задано ни одного символа, то информационные сообщения выводиться не будут.

При отсутствии указания +i в файле current.par вывод информационных сообщений определяется параметрами, заданными в файле syspar.* .

Такими параметрами могут быть:

SysInfoPrint

- общий признак включенного вывода информационных сообщений;

SysInfoStdOut

- признак вывода информационных сообщений в поток stdout при условии, что он переведен в файл;

SysInfoStdErr

- признак вывода информационных сообщений в поток stderr;

SysInfoFile

- признак вывода информационных сообщений в файл.

Единичные значения параметров SysInfoStdOut и SysInfoStdErr позволяют при перенаправлении stdout в файл перенаправить информационные сообщения в этот же файл и сохранить их на экране видеомонитора (перевод вывода пользовательской программы в файл должен быть осуществлен с помощью параметра '+o' файла current.par). Манипулируя значениями этих параметров, можно добиться любой комбинации ВИДЕОМОНИТОР - STDOUT, ПЕРЕВЕДЕННЫЙ В ФАЙЛ.

Отметим, что направление информационных сообщений с помощью параметра '+i' файла current.par имеет приоритет над их направлением, заданным параметрами SysInfoStdOut, SysInfoStdErr и SysInfoFile файла syspar.* .

Направление информационных сообщений в файл (SysInfoFile = 1) управляется еще двумя параметрами файла syspar.*:

SysInfoFileName

- путь, определяющий файл для размещения информационных сообщений;

SysInfoSepFile

- признак накопления информационных сообщений в отдельном для каждого процессора файле.

При нулевом значении SysInfoSepFile каждый процессор направляет информационные сообщения непосредственно в файл, заданный параметром SysInfoFileName. При единичном - каждый процессор накапливает информационные сообщения в своем временном файле. При завершении работы все временные файлы собираются в один (определенный параметром SysInfoFileName), а затем уничтожаются.

Все сообщения об ошибках:

  • всегда выводятся в поток stderr;

  • выводятся в поток stdout, если вывод задачи пользователя перенаправлен в файл;

  • выводятся в файл, заданный параметром SysInfoFileName, если параметр SysInfoFile равен единице (в тот же файл, что и информационные сообщения).

Поэтому сообщения об ошибках:

  • всегда сопровождают вывод пользовательской задачи;

  • всегда поступают на видеомонитор (если потоки stdout и stderr одновременно не переведены в файлы).

9.ИЗМЕРЕНИЕ ВРЕМЕНИ ВЫПОЛНЕНИЯ УЧАСТКОВ ПОЛЬЗОВАТЕЛЬСКОЙ ПРОГРАММЫ.

Для обозначения начала и конца измеряемого участка используются макровызовы MeasureStart и MeasureFinish. Измеряемые участки могут быть вложенными:

MeasureStart; /* начало участка 1 */
...........................................

MeasureStart; /* начало участка 2 */
...........................................
...........................................

MeasureStart; /* начало участка N */
............................................
............................................
MeasureFinish; /* конец участка N */

...........................................
...........................................

MeasureFinish; /* конец участка 2 */
...........................................

MeasureFinish; /* конец участка 1 */

Макровызов MeasureStart эквивалентен обращению к функции dvm_trace (см.п.7) с номером события 1 (имя этого события - MeasureStart), а макровызов MeasureFinish - обращению к dvm_trace с номером события 2 (имя этого события - MeasureFinish). В качестве дополнительной информации в открытые потоки трассировки для макровызова MeasureStart выводится уровень вложенности измеряемого участка (1,2, ..., N в вышеприведенной схемке), а для макровызова MeasureFinish - уровень вложенности и время выполнения программы, прошедшее с момента макровызова MeasureStart с тем же уровнем вложенности.

Характеристики

Список файлов учебной работы

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
7021
Авторов
на СтудИзбе
260
Средний доход
с одного платного файла
Обучение Подробнее