DEB_GU~2 (1158346), страница 5
Текст из файла (страница 5)
| SL или PL | <номер цикла> (<номер объемлющего цикла>) [<размерность цикла>] {<имя файла>, <номер строки>} = <уровень накопления трассировки>, (<измерение> : <первая итерация> , <последняя итерация> , <шаг трассируемых итераций>) | |
| # Trace size = <размер трассировки в байтах данного цикла для указанного уровня накопления трассировки> | ||
| # String count = <число строк трассировки данного цикла для указанного уровня накопления трассировки > | ||
| # Count of traced iterations = <число трассируемых итераций цикла> | ||
EL: <номер цикла>
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
| SL или PL | <номер цикла> (<номер объемлющего цикла>) [<размерность цикла>] {<имя файла>, <номер строки>} = <уровень накопления трассировки>, (<измерение> : <первая итерация> , <последняя итерация> , <шаг трассируемых итераций>) | |
| # Trace size = <размер трассировки в байтах данного цикла для указанного уровня накопления трассировки> | ||
| # String count = <число строк трассировки данного цикла для указанного уровня накопления трассировки > | ||
| # Count of traced iterations = <число трассируемых итераций цикла> | ||
EL: <номер цикла>
14.Структура трассировки вычислений
При трассировке вычислений накапливаемая трассировочная информация состоит из двух частей:
-
заголовка трассировки;
-
тела трассировки (может отсутствовать).
Заголовок присутствует в трассировке даже тогда, когда накопление трассировки отключено для всей программы. Его структура напоминает структуру файла описания циклов, но без вычисляемых значений объемов трассировки для всей программы и для отдельных циклов:
MODE = <уровень накопления трассировки для всей программы>,
| SL или PL | <номер цикла> (<номер объемлющего цикла>) [<размерность цикла>] {<имя файла>, <номер строки>} = <уровень накопления трассировки>, (<измерение> : <первая итерация> , <последняя итерация> , <шаг трассируемых итераций>) |
EL: <номер цикла>
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
| SL или PL | <номер цикла> (<номер объемлющего цикла>) [<размерность цикла>] {<имя файла>, <номер строки>} = <уровень накопления трассировки>, (<измерение> : <первая итерация> , <последняя итерация> , <шаг трассируемых итераций>) |
EL: <номер цикла>
Тело трассировки отсутствует, когда накопление трассировки отключено для всей программы. Иначе тело трассировки состоит из множества записей следующих типов:
-
Обращение к переменной на чтение.
RD: [<тип переменной>] <имя переменной> = <значение>; {<имя файла>, <номер строки>} -
Обращение к переменной на запись (перед вычислением выражения).
BW: [<тип переменной>] <имя переменной>; {<имя файла>, <номер строки>} -
Результат записи в переменную.
AW: [<тип переменной>] <имя переменной> = <значение>; {<имя файла>, <номер строки>} -
Обращение к редукционной переменной на чтение.
RV_RD: [<тип переменной>] <имя переменной> = <значение>; {<имя файла>, <номер строки>} -
Обращение к редукционной переменной на запись (перед вычислением выражения).
RV_BW: [<тип переменной>] <имя переменной>; {<имя файла>, <номер строки>} -
Результат записи в редукционную переменную.
RV_AW: [<тип переменной>] <имя переменной> = <значение>; {<имя файла>, <номер строки>} -
Результат вычисления редукции.
RV: [<тип переменной>] <значение>; {<имя файла>, <номер строки>} -
Пропуск операторов при обращении к элементу распределенного массива в последовательной части программы.
SKP: {<имя файла>, <номер строки>} -
Начало выполнения параллельного цикла.
PL: <номер цикла> (<номер родительского цикла или пусто>) [<размерность цикла>] = <уровень трассировки: FULL, MODIFY, NONE>, (<диапазон трассируемых итераций (может отсутствовать)>); {<имя файла>, <номер строки>} -
Начало выполнения последовательного цикла.
SL: <номер цикла> (<номер родительского цикла или пусто>) [<размерность цикла>] = <уровень трассировки: FULL, MODIFY, NONE>, (<диапазон трассируемых итераций (может отсутствовать)>); {<имя файла>, <номер строки>} -
Начало итерации (помещается в трассировку только при изменении самой вложенной итерации цикла).
IT: <абсолютный индекс итерации (вычисляется из значений всех итерационных переменных)>, (<значение итерационной переменной>,< значение итерационной переменной >,…). -
Конец выполнения параллельного цикла.
EL: <номер цикла>; {<имя файла>, <номер строки>}
15.Сообщения об ошибках системы поддержки
Сообщения об ошибках, возникающих в процессе функционирования системы поддержки, делятся (по степени серьезности последних) на предупреждения и сообщения об ошибках, прерывающих выполнение программы.
Ошибки, прерывающие выполнение программы, могут быть обычными, ответственность за которые лежит (скорее всего) на пользователе, и фатальные, требующие, возможно, участия разработчика или его представителя.
В соответствии с этим сообщения об ошибках имеют один из следующих видов:
*** RTL warning <номер класса ошибки> . <номер ошибки внутри класса>:
<текст сообщения об ошибке> ,
*** RTL err <номер класса ошибки> . <номер ошибки внутри класса>:
<текст сообщения об ошибке> ,
*** RTL fatal err <номер класса ошибки> . <номер ошибки внутри класса>:
<текст сообщения об ошибке> .
Класс ошибки определяется функциональной и модульной структурой системы поддержки.
Каждому сообщению об ошибке предшествует вывод имени файла и номера строки, в которой произошла ошибка, как пользовательской программы, так и системы поддержки:
USRFILE=<имя файла программы пользователя>; USRLINE=<номер строки>;
SYSFILE=<имя файла системы поддержки>; SYSLINE=<номер строки>;
По характеру возникновения ошибки делятся на две группы. Первую группу составляют ошибки, возникающие только на всех процессорах сразу. Сообщения об этих ошибках выводит процессор ввода/вывода. Вторая группа состоит из ошибок, которые могут происходить не на всех процессорах "одновременно". Сообщения о таких ошибках выводит каждый процессор самостоятельно, сопровождая каждое сообщение своими внутренним и внешним номерами. При работе на одном процессоре все сообщения об ошибках выводятся без его номеров.
В системе поддержки предусмотрены возможности вывода всех сообщений об ошибках первой группы всеми процессорами и вывода всех сообщений об ошибках второй группы только процессором ввода/вывода. Первая возможность достигается установкой значения параметра MultiProcErrReg (файлы параметров syspar.*) равным 2. Для вывода сообщений об ошибках второй группы только процессором ввода/вывода значение этого параметра должно быть нулевым (эта возможность используется только в экспериментальных целях). Стандартное значение параметра MultiProcErrReg равно единице.
Сообщения об ошибках с их тематическим разбиением и в порядке возрастания номеров классов и номеров ошибок внутри класса рассмотрены в документе «Сиситема поддержки DVM-программ. Детальный дизайн».
16.Структура файла системной трассировки
Файл системной трассировки имеет следующую структуру:
Событие обращения к функции имеет имя call_<имя _функции>
Событие возврата из функции имеет имя ret_<имя _функции>
Трассировка каждого события может быть включена и выключена по его номеру (см.п.6).
Состав накапливаемой при трассировке информации определяется режимом трассировки. При кратком режиме выводится:
-
имя события;
-
время, прошедшее с предыдущего события;
-
имя файла пользовательской программы и номер строки в нем, определяющие точку произошедшего события в программе.
При подробном режиме трассировки сохраняемая информация расширяется и зависит от типа события. Если событием является обращение к функции, то выводятся ее входные параметры. При возврате из функции выводятся ее выходные параметры. Для каждого события может быть задан подробный режим трассировки вне зависимости от общего режима.
Для наглядности изображения вызовов функций различных уровней вложенности в параметрах, управляющих системной трассировкой, можно задать желаемый отступ от начала строки для получения «лесенки» (см.п.11.4).















