deb_guid-r (1158374), страница 5
Текст из файла (страница 5)
Явно задаваемая область памяти контролируется путем сравнения ее эталонной контрольной суммы с текущей. Эталонная контрольная сумма вычисляется при инициализации системы поддержки.
Начальный и конечный адреса области памяти с программным кодом задаются программой, запускающей на выполнение систему поддержки, посредством записи этих адресов в ее (системы поддержки) исполняемый модуль. Эта же программа вычисляет и записывает в исполняемый модуль системы поддержки эталонную контрольную сумму памяти команд. Система поддержки в процессе своего функционирования (в частности, по событиям трассировки) контролирует память команд, сравнивая ее текущую контрольную сумму с эталонной.
Управление механизмами контроля областей памяти осуществляется с помощью следующих параметров файлов systrace.* .
-
EveryEventCheckBound - признак контроля всех динамически запрошенных блоков памяти по каждому трассируемому событию.
-
EveryTraceCheckBound - признак контроля всех динамически запрошенных блоков памяти при каждом обращении к функциям вывода трассировки. Данный контроль включает в себя контроль, задаваемый параметром EveryEventCheckBound, поскольку осуществляется и по не трассируемым (выключенным) событиям.
-
dvm_StartAddr - начальный адрес, контролируемый при трассировке области памяти.
-
dvm_FinalAddr - конечный адрес контролируемой при трассировке области памяти.
-
EveryEventCheckMem - признак контроля области памяти, заданной параметрами dvm_StartAddr и dvm_FinalAddr, при каждом трассируемом событии.
-
EveryTraceCheckMem - признак контроля заданной параметрами dvm_StartAddr и dvm_FinalAddr области памяти при каждом обращении к функциям вывода трассировки. Данный контроль включает в себя контроль, задаваемый параметром EveryEventCheckMem, т.к. проводится и по выключенным событиям трассировки.
-
EveryEventCheckCodeMem - признак контроля области памяти с программным кодом по каждому трассируемому событию.
-
EveryTraceCheckCodeMem - признак контроля области памяти с программным кодом при каждом обращении к функциям вывода трассировки. Данный контроль включает в себя контроль, задаваемый параметром EveryEventCheckCodeMem.
11.4.6Управление выводом дополнительной информации при трассировке некоторых функций системы поддержки в расширенном режиме
-
distr_Trace – признак вывода дополнительной информации при трассировке функции distr_ . Выводится карта отображения представления абстрактной машины, диапазоны локальных значений индексов для каждого измерения представления абстрактной машины, признак размножения по всем измерениям процессорной подсистемы (Repl) и признак отображения на каждый процессор какого либо (не обязательно одного и того же) элемента представления абстрактной машины (Every).
-
align_Trace – признак вывода дополнительной информации при трассировке функции align_ . Выводится карта отображения распределенного массива и диапазоны локальных значений индексов для каждого его измерения.
-
mappl_Trace – признак вывода карты отображения параллельного цикла при трассировке функции mappl_ .
-
dopl_Trace – признак вывода дополнительной информации при трассировке функции dopl_ . Выводится очередная порция диапазонов локальных значений индексов для каждого измерения параллельного цикла.
-
RedVarTrace – признак вывода адресов, типов и значений всех переменных редукционной группы при выполнении функций saverv_ и strtrd_, а также в начале и конце выполнения функции waitrd_.
-
OutIndexTrace – признак вывода выходных значений индексов для каждого измерения распределенного массива при выполнении внутренней функции системы поддержки GetIndexArray.
-
diter_Trace – признак вывода массива индексов при трассировке функции взаимодействия с DVM-отладчиком diter_.
-
drmbuf_Trace – признак вывода массива индексов при трассировке функции взаимодействия с DVM-отладчиком drmbuf_.
12Диагностические сообщения динамического отладчика
Общая структура сообщения об ошибке динамического отладчика:
(<process number>)<context> File: <file>, Line: <line> (<count> times)<error message>
где:
| <process number> | – номер процессора, на котором произошла ошибка. | |
| <context> | – контекст, в котором произошла ошибка. | |
| Sequential branch | – ошибка произошла в последовательной части программы | |
| Loop( No(N1), Iter(I1,I2,…)), …, Loop( No(Nm), Iter(I1,I2,…)) | – ошибка произошла в ходе выполнения цикла m-степени вложенности. | |
| <file> | – имя файла, где произошла ошибка. | |
| <line> | – номер строки. | |
| <count> | – число повторений данной ошибки в данном контексте. Выводится при суммарной выдаче всех найденных ошибок. | |
| <error message> | – сообщение о произошедшей ошибке. | |
12.1Динамический контроль
| Writing to read-only variable<var> | Обнаружена запись в переменную, которая доступна только для чтения. |
| Using of non-initialized private variable<var> | Обнаружено обращение к неинициализированной переменной. |
| Using non-initialized element <elem> | Обнаружено обращение к неинициализированному элементу массива. |
| Using variable <var>before asirchronous reduction competed | Обращение к редукционной переменной до завершения операции редукции. |
| Access to non-local element <elem> | Обращение к нелокальному элементу массива. |
| Writing to shadow element <elem> of array | Запись в теневой элемент массива. |
| Shadow element <elem> was not updated | Обращение к теневым элементам до завершения операции пересылки границ. |
| Data dependence in loop <elem> | Обнаружена зависимость параллельного цикла по данным. |
| WAIT for shadow renew without START | Выдана операция ожидания завершения обмена границами без его инициализации. |
| Double WAIT for shadow renew | Повторный вызов операции ожидания завершения обмена границами. |
| Write to exported elements before shadow renewal. | Запись в импортируемый элемент массива до завершения операции обмена границ. |
| Writing to remote data buffer <var> | Запись в буфер удаленного доступа. |
| Write to remote element in sequential branch | Обращение к элементу массива в последовательной части без предварительной проверки принадлежности данного элемента текущему процессору. |
| WAIT for reduction without START | Ожидание завершения редукции без ее фактического запуска. |
| Using an element outside of array <elem> | Обращение к элементу массива за пределами его границ. |
12.2Накопление и сравнение трассировки
| Сообщение | Описание |
| Bad file structure | Нарушена структура файла трассировки. |
| Undefined keyword | Файл трассировки содержит неизвестное ключевое слово. |
| Bad command syntax | Неправильная структура записи трассировки. |
| Can't open a file <file name> | Невозможно открыть указанный файл. |
| Trace file <file name> is empty | Указанный файл трассировки не содержит информации. |
| Bad trace structure (missing current loop) | Нарушена структура файла трассировки. Отсутствует запись начала цикла. |
| No current loop | Отсутствует запись начала цикла. |
| Unexpected iteration of loop | Эталонная трассировка не содержит записи о выполнении данной итерации. |
| Double execution of iteration, No = <iter no> | Повторное исполнение той же итерации. |
| Unexpected loop execution | Эталонная трассировка не содержит записи о начале выполнения данного цикла. |
| Abnormal loop exit | Завершение цикла не соответствует записи в эталонной трассировке. |
| Unexpected use of variable | Эталонная трассировка не содержит записи об использовании данной переменной. |
| Unexpected trace record | Эталонная трассировка не содержит записи о исполнении данного события. |
| Different <type> values: <standard value> != <current value> | Значение переменной не соответствует эталонной трассировке. |
| Different <type> values of reduction variable: <standard value> != <current value> | Значение результата вычисления редукции не соответствует эталонной трассировке. |
13Структура файла описания циклов
| # Trace size = | <размер всего файла трассировки в байтах> |
| # String count = | <число строк всего файла трассировки> |
| 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: <номер цикла>















