debugDDr (1158410), страница 8
Текст из файла (страница 8)
Следующие функции обращаются к функциям модулей накопления или сравнения трассировки в зависимости от заданного режима:
| void cmptrace_BeginSeqLoop( char *File, unsigned long Line, long No ) | ||
| File | – | имя файла с исходной DVM-программой; |
| Line | – | номер строки в DVM-программе; |
| No | – | уникальный номер конструкции. |
Функция отмечает начало последовательного цикла программы.
| void cmptrace_BeginParLoop( char *File, unsigned long Line, long No, byte Rank, long *Init, long *Last, long *Step ) | ||
| File | – | имя файла с исходной DVM-программой; |
| Line | – | номер строки в DVM-программе; |
| No | – | уникальный номер конструкции; |
| Rank | – | размерность цикла; |
| Init | – | массив начальных значений итерационных переменных; |
| Last | – | массив конечных значений итерационных переменных; |
| Step | – | массив значений шагов приращения итерационных переменных. |
Функция отмечает начало параллельного цикла программы.
| void cmptrace_BeginTaskRegion( char *File, unsigned long Line, long No ) | ||
| File | – | имя файла с исходной DVM-программой; |
| Line | – | номер строки в DVM-программе; |
| No | – | уникальный номер конструкции; |
Функция отмечает начало области задач программы.
| void cmptrace_EndStruct( char *File, unsigned long Line, long No, unsigned long BegLine ) | ||
| File | – | имя файла с исходной DVM-программой; |
| Line | – | номер строки в DVM-программе; |
| No | – | уникальный номер конструкции; |
| BegLine | – | номер строки начала конструкции. |
Функция отмечает завершение цикла или области задач.
| void cmptrace_Iter( AddrType *index ) | ||
| index | – | массив указателей на итерационные переменные. |
Функция отмечает начало новой итерации цикла или новой задачи.
| void cmptrace_PreStoreVar( char *File, unsigned long Line, char *Operand, long Type, byte Reduct ) | ||
| File | – | имя файла с исходной DVM-программой; |
| Line | – | номер строки в DVM-программе; |
| Operand | – | имя переменной; |
| Type | – | тип переменной; |
| Reduct | – | флаг обращения к редукционной переменной. |
Функция отмечает начало вычисления нового значения для переменной с именем Operand.
| void cmptrace_PostStoreVar( char* File, unsigned long Line, char* Operand, long Type, void* Value, byte Reduct ) | ||
| File | – | имя файла с исходной DVM-программой; |
| Line | – | номер строки в DVM-программе; |
| Operand | – | имя переменной; |
| Type | – | тип переменной; |
| Value | – | адрес переменной; |
| Reduct | – | флаг обращения к редукционной переменной. |
Функция отмечает завершение вычисления выражения и запись результата в переменную с именем Operand.
| void cmptrace_LoadVar( char* File, unsigned long Line, char* Operand, long Type, void* Value, byte Reduct ) | ||
| File | – | имя файла с исходной DVM-программой; |
| Line | – | номер строки в DVM-программе; |
| Operand | – | имя переменной; |
| Type | – | тип переменной; |
| Value | – | адрес переменной; |
| Reduct | – | обращение идет к редукционной переменной или нет. |
Функция отмечает чтение значения переменной.
| void cmptrace_ReductVar( char *File, unsigned long Line, long Type, void *Value, byte Wait ) | ||
| File | – | имя файла с исходной DVM-программой; |
| Line | – | номер строки в DVM-программе; |
| Operand | – | имя переменной; |
| Type | – | тип переменной; |
| Value | – | адрес редукционной переменной; |
| Wait | – | флаг отложенной записи результата. Равен 1, если результат редукции необходимо помещать в трассировку только после завершения текущей параллельной конструкции. |
Функция отмечает завершение вычисления редукционной операции.
| void cmptrace_SkipBlock( char *File, unsigned long Line ) | ||
| File | – | имя файла с исходной DVM-программой; |
| Line | – | номер строки в DVM-программе; |
Функция отмечает завершение блока собственных вычислений в последовательной ветви программы.
Следующие функции предназначены для работы со структурами описания исполняемых конструкций программы.
| STRUCT_INFO* trc_InfoNew(STRUCT_INFO* pParent) | ||
| pParent | – | указатель на описание объемлющей конструкции. |
Функция выделяет память и инициализирует новую структуру с описанием исполняемой конструкции.
| void trc_InfoDone(STRUCT_INFO* pInfo) | ||
| pInfo | – | указатель на описание конструкции. |
Функция-деструктор описания конструкции.
| int trc_InfoCanTrace(STRUCT_INFO* pInfo, int nRecType) | ||
| pInfo | – | указатель на описание текущей исполняемой конструкции; |
| nRecType | – | тип записи трассировки. |
Функция определяет необходимость трассировки записи указанного типа в соответствии с параметрами конструкции.
| void trc_InfoSetup(STRUCT_INFO* pInfo, long *Init, long *Last, long *Step) | ||
| pInfo | – | указатель на описание конструкции; |
| Init | – | массив начальных значений итерационных переменных; |
| Last | – | массив конечных значений итерационных переменных; |
| Step | – | массив значений шагов приращения итерационных переменных. |
Функция инициализирует структуру описания конструкции в момент начала ее исполнения.
| STRUCT_INFO* trc_InfoFindForCurrentLevel(long No, byte Type, byte Rank, char *File, unsigned long Line) | ||
| No | – | уникальный номер конструкции; |
| Type | – | тип конструкции (параллельный или последовательный цикл, область задач); |
| Rank | – | размерность конструкции; |
| File | – | имя файла с исходной DVM-программой; |
| Line | – | номер строки в DVM-программе. |
Функция осуществляет поиск на текущем уровне вложенности конструкций и возвращает как результат поиска описание конструкции с заданными параметрами. Если описание конструкции с заданными параметрами отсутствует, то инициализируется новая структура и возвращается как результат.
| STRUCT_INFO* trc_InfoFindByNo(long No, s_COLLECTION *pColl) | ||
| No | – | уникальный номер конструкции; |
| pColl | – | коллекция описаний конструкций. |
Функция рекурсивно перебирает все элементы коллекции и возвращает описание конструкций с указанным номером. Возвращает NULL, если описания конструкции с казанным номером не существует.
6.5.2Модуль записи трассировки
Функции модуля записи трассировки предназначены для формирования файла трассировки и конфигурационного файла трассировки. Прототипы функций модуля следующие:
| void trc_wrt_header( s_COLLECTION* pStructs, int Level, FILE *hf, int nWriteInfo ) | ||
| pStructs | – | коллекция конструкций программы верхнего уровня; |
| Level | – | степень вложенности конструкций; |
| hf | – | дескриптор файла; |
| nWriteInfo | – | флаг записи информационных комментариев. |
Функция записывает в файл конфигурационные параметры трассировки для каждой конструкции программы. Дополнительно, если задан флаг записи информационных комментариев, то в файл пишутся специальные комментарии с суммарными значениями объемов трассировки для каждой конструкции. Функция рекурсивно обращается к себе со значением Level+1 и коллекцией конструкций следующего уровня каждого элемента из коллекции pStructs.
| void trc_wrt_trace( FILE *hf ) | ||
| hf | – | дескриптор файла трассировки. |
Функция формирует файл с эталонной трассировки.
| size_t trc_wrt_beginstruct( FILE *hf, STRUCT_BEGIN *pStruct) | ||
| hf | – | дескриптор файла; |
| pStruct | – | ссылка на запись начала конструкции программы. |
Функция записывает в файл запись начала конструкции программы. Возвращает число записанных байтов.
| size_t trc_wrt_enstruct( FILE *hf, STRUCT_END* pStruct) | ||
| hf | – | дескриптор файла; |
| pStruct | – | ссылка на запись завершения конструкции программы. |
Функция записывает в файл запись завершения конструкции программы. Возвращает число записанных байтов.
| size_t trc_wrt_iter( FILE *hf, ITERATION *Iter ) | ||
| hf | – | дескриптор файла; |
| Iter | – | ссылка на запись начала витка. |
Функция записывает в файл запись начала нового витка цикла или задачи. Возвращает число записанных байтов.
| size_t trc_wrt_readvar( FILE *hf, VARIABLE *Var ) | ||
| hf | – | дескриптор файла; |
| Var | – | ссылка на запись обращения к переменной. |
Функция записывает в файл запись обращения к переменной на чтение. Возвращает число записанных байтов.
| size_t trc_wrt_prewritevar( FILE *hf, VARIABLE *Var ) | ||
| hf | – | дескриптор файла; |
| Var | – | ссылка на запись обращения к переменной. |
Функция записывает в файл запись начала вычисления значения переменной. Возвращает число записанных байтов.
| size_t trc_wrt_postwritevar( FILE *hf, VARIABLE *Var ) | ||
| hf | – | дескриптор файла; |
| Var | – | ссылка на запись обращения к переменной. |
Функция записывает в файл запись завершения вычисления нового значения и модификации переменной. Возвращает число записанных байтов.
| size_t trc_wrt_reductvar( FILE *hf, VARIABLE *Var ) | ||
| hf | – | дескриптор файла; |
| Var | – | ссылка на запись результата редукции. |
Функция записывает в файл запись результата вычисления редукционной операции. Возвращает число записанных байтов.
| size_t trc_wrt_variable( FILE *hf, VARIABLE *Var, int iType ) | ||
| hf | – | дескриптор файла; |
| Var | – | ссылка на запись обращения к переменной; |
| iType | – | тип записи. |
Общая функция записи в файл события обращения к переменной. Возвращает число записанных байтов.
| size_t trc_wrt_skip( FILE *hf, SKIP *Skip ) | ||
| hf | – | дескриптор файла; |
| Skip | – | ссылка на запись завершения блока собственных вычислений. |
Функция записывает в файл запись завершения блока собственных вычислений в последовательной части программы. Возвращает число записанных байтов.
| void trc_wrt_calctraceinfo(void) |
Функция вычисляет суммарные размеры трассировки программы и всех исполняемых конструкций.
| void trc_wrt_calcinfo(STRUCT_INFO* pInfo) | ||
| pInfo | – | ссылка на описание конструкции программы. |
Функция вычисляет суммарные размеры трассировки для указанной конструкции.
6.5.3Модуль накопления трассировки
Функции модуля накопления трассировки формируют записи в таблице трассировочных записей. Если задан режим сквозной записи, то трассировочные записи в памяти не формируются, а сразу же записываются в файл с помощью функций модуля записи трассировки.















