rtsDDr (1158447), страница 5

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

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

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

void epprintf (

int
char
int
char

prefix,
*FileNamePtr,
Line,
*format, . . . );

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

8О выводе информационных сообщений системы поддержки и сообщений об ошибках

8.1Функции вывода информационных сообщений и сообщений об ошибках

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

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

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

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

Информационным сообщением считается также любая трассировочная информация, выводимая функциями tprintf и dvm_trace в поток информационных сообщений системы поддержки (см. п.7.3).

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

8.2Управление стандартными выходными потоками и потоками вывода информационных сообщений и сообщений об ошибках

Направление и перенаправление стандартных выходных потоков, а также потоков, предназначенных для вывода информационных сообщений и сообщений об ошибках, осуществляется с помощью параметров, содержащихся в файлах 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 в файлы не переведены или переведены в один файл, то вывод информационных сообщений будет осуществляться только в поток stdout (информационные сообщения не дублируются). При направлении информационных сообщений в файл (задан символ "f") его имя (путь) определяется параметром SysInfoFileName файла параметров syspar.* (см. ниже). Если не задано ни одного символа, то информационные сообщения выводиться не будут.

Перенаправление потоков stdout и stderr в файлы может быть осуществлено также с помощью следующих параметров, задаваемых в файле syspar.*:

StdOutToFile

признак перевода потока stdout в файл;

StdOutFileName

путь, определяющий файл для перевода в него потока stdout (если этот параметр не задан или задан пустой путь, то перенаправление потока stdout, если оно указано параметром StdOutToFile, будет произведено в файл stdout.out);

StdErrToFile

признак перевода потока stderr в файл;

StdErrFileName

путь, определяющий файл для перевода в него потока stderr (если этот параметр не задан или задан пустой путь, то перенаправление потока stderr, если оно указано параметром StdErrToFile, будет произведено в файл stderr.out);

DelStdStream

признак уничтожения "старых" (оставшихся от предыдущего запуска) файлов с выходными потоками.

При вводе и обработке параметров наибольший приоритет имеет самое первое указание о переводе в файл стандартного выходного потока. В частности, перенаправление потоков stdout и stderr с помощью параметров "+o" и "+e" файла current.par подавляет перевод потоков перечисленными выше параметрами файла syspar.* (файл current.par вводится и обрабатывается раньше файла syspar.*).

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

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

SysInfoPrint

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

SysInfoStdOut

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

SysInfoStdErr

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

SysInfoFile

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

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

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

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

SysInfoFileName

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

FatInfoNoOpen

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

SysInfoSepFile

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

DelSysInfo

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

При нулевом значении параметра FatInfoNoOpen неудачное открытие файла для информационных сообщений приведёт к выводу предупреждения в поток сообщений об ошибках и продолжению выполнения программы без вывода информационных сообщений в файл.

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

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

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

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

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

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

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

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

ЗАМЕЧАНИЕ 1. Вывод информационных сообщений до ввода значения параметра SysInfoPrint определяется состоянием общего признака вывода информационных сообщений в момент старта программы (до инициализации системы поддержки). Ненулевое начальное значение этого признака устанавливается в том случае, если система поддержки скомпилирована с предопределённой переменной компиляции _INIT_INFO_ . В противном случае информационные сообщения до ввода параметра SysInfoPrint не выводятся.

ЗАМЕЧАНИЕ 2. Стандартно вывод информационных сообщений осуществляется следующим образом. До ввода параметров информационные сообщения направлены в поток stdout. Если после ввода параметров SysInfoStdOut и SysInfoStdErr окажется, что первый из них равен нулю, а второй – нет, то информационные сообщения будут перенаправлены в поток stderr. Если же оба параметра будут введены ненулевыми, а потоки stdout и stderr направлены на видеомонитор или связаны с одним и тем же файлом, то вывод информационных сообщений будет продолжен только в поток stdout.

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

ЗАМЕЧАНИЕ 3. Если задан вывод информационных сообщений в файл и в поток stdout (stderr), а поток stdout (stderr) переведён в этот же файл, то вывод информационных сообщений в файл блокируется (параметр SysInfoFile устанавливается равным нулю).

8.3Классы информационных сообщений и управление их выводом

Все информационные сообщения разделены на непересекающиеся классы, каждый из которых связан с функционированием определённой компоненты системы поддержки. Вывод сообщений каждого класса управляется независимо с помощью перечисленных ниже параметров, содержащихся в файлах syspar.*, statist.*, systrace.* и usrdebug.* . По умолчанию считается, что параметр задаётся в файлах syspar.* .

  • VersStartPrint – признак вывода номера версии системы поддержки перед началом работы программы.

  • VersFullStartPrint – признак вывода номера версии системы поддержки и номеров версий всех файлов параметров перед началом работы программы.

  • VersFinishPrint – признак вывода номера версии системы поддержки после окончания работы программы.

  • VersFullFinishPrint – признак вывода номера версии системы поддержки и номеров версий всех файлов параметров после окончания работы программы.

  • SysParPrint – признак вывода параметров инициализации системы поддержки перед началом работы программы.

  • ProcListPrint – признак вывода таблицы процессоров перед началом работы программы. Для каждого процессора выводится его внутренний и внешний номера и идентификатор.

  • WeightListPrint – признак вывода весов координат процессоров перед началом работы программы.

  • ParamRunPrint – признак вывода информации о параметрах и режимах запуска системы поддержки перед началом работы программы (стандартный или нестандартный запуск, тип базовой системы передачи сообщений и т. д.).

  • EndProgMemoryPrint – признак вывода информации о неосвобожденной памяти при завершении работы.

  • EndProgObjectPrint – признак вывода информации о неуничтоженных статических DVM-объектах при завершении работы.

  • EndProgCheckSumPrint – признак вывода информации о состоянии контролируемых областей памяти при завершении работы.

  • InputParPrint – признак вывода сообщений о начале ввода каждого файла параметров.

  • EndReadParPrint – признак вывода сообщений о завершении ввода каждого файла параметров.

  • TimeExpendPrint режим вывода информации о расходе времени программой. При нулевом значении данного параметра информация о расходе времени не выводится. Единичное значение задаёт краткий режим вывода информации о расходе времени, большее единицы (2,3,4,5) – подробный. Параметр задаётся в файлах statist.*.

  • CallCountPrint – признак вывода статистики обращений к функциям системы подддержки, доступным программе пользователя (для каждой функции сообщается число обращений к ней). Параметр задаётся в файлах statist.*. При единичном значении CallCountPrint выводится информация только о функциях, к которым было хотя бы одно обращение, а при значении, равном 2 – обо всех функциях.

  • TraceClosePrint – признак вывода сообщений о завершении выгрузки каждого буфера с накопленной системной трассировкой в файл (при трассировке в буфер оперативной памяти). Параметр задаётся в файлах systrace.*.

  • DbgInfoPrint – признак вывода информационных сообщений подсистемы динамического контроля и трассировки вычислений. Параметр задаётся в файлах usrdebug.* .

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

9Измерение времени выполнения участков пользовательской программы

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

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

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

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

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

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

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

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

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

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

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