Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МиАПО / SIMC_dorab.doc
Скачиваний:
13
Добавлен:
07.02.2016
Размер:
756.22 Кб
Скачать

4 Отладочные средства

4.1 Диагностика ошибок

Во время выполнения модели могут возникать ошибки, которые регистрируются C++ (приводят к аварийному останову), или не регистрируютсяC++, но нарушают логику моделирования. Ошиб­ки первого вида могут быть следствием ошибок второго вида, поэ­тому часть действий, которые могут повлечь за собой возникнове­ние ошибки, регистрируются функциями моделирования. Если эти ошибки серьезны, они могут завершиться функциейexit(). При этом распечатывается расширенная (аварийная) статистика. Коды всех ошибок с пояснениями выводятся на печать с помощью функцииvoid error(int errcode), гдеerrcode- код ошибки. Полный перечень кодов регистрируемых ошибок и сообщений приводится в приложении.

Появление регистрируемой ошибки, в результате которой про­должение моделирования становится невозможным, приводит к записи аварийной статистики в файл error.html.

4.2 Трассировка

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

Приложение 1. Коды и сообщения об ошибках

101: отрицательное значение времени задержки;

102: в спискеdelistнет транзактов

201: попытка уничтожить несуществующий транзакт;

202:попытка уничтожить несуществующий прибор;

203:попытка уничтожить несуществующую очередь;

204:попытка уничтожить несуществующий накопитель;

205:уничтожается занятый прибор;

206:прибор уничтожается вместе с ожидающими транзактами;

207:прибор уничтожается вместе с прерванными транзактами;

208:накопитель уничтожается вместе с ожидающими транзактами;

209:уничтожается непустой накопитель;

301:попытка занять заполненую очередь;

302:попытка освободить пустую очередь;

402:попытка освободить пустой прибор;

403:при попытке занять прибор отсутствует транзакт;

404:при попытке освободить прибор отсутствует транзакт;

405:прибор освобождается не тем транзактом, которым был занят;

501:отрицательное время задержки;

502:попытка задержать отсутствующий транзакт;

511:при выполнении функцииacceptотсутствует транзакт;

512:попытка вывести транзакт из несуществующего спискаsignlist;

601:следующее событие выходит за диапазон допустимых;

602:попытка планирования при пустых спискахfuture, current, wаitl[i];

701: попытка удалить объект из пустого списка;

702: попытка поместить в список пользователя отсутствующий тран­закт;

711: в функцииsplitотсутствует транзакт;

712: при выполнении функцииassembleотсутствует активный транзакт;

713: недопустимое значение параметраnфункцииsplit;

714: недопустимое значение параметраnфункцииassemble;

801: параметр функцииnexte<1;

802: при обращении к функцииnextотсутствует активный тран­закт

901: попытка сканирования пустого списка;

902: попытка сканирования несуществующего списка

7301: в табличном распределении должно бытьp[1]=0.0

7302: в табличном распределении недопустимоp[i]=p[i-1]

Приложение 2. Сообщения в режиме трассировки

initcreate- транзакт <номер> помещен в модель.

eve= <событие инициализации>

create- создан транзакт <номер>

eve= <событие инициализации>

nexttime= <время инициализации>

destroy- уничтожен транзакт <номер>

delayt- транзакт <номер> задержан на <время задержки>

nexttime= <время инициализации>

wаit- транзакт <номер>eve= <событие инициализации> помещен в списокwaitl[<ожидаемое событие>]

next- транзакт <номер> направлен на выполнение события <номер события>

infac- прибор <имя> захвачен транзактом <номер> обработка транзакта <номер> прервана или транзакт <номер> занял прибор <имя> или транзакт <номер> пытался захватить прибор <имя>

outfac- транзакт <номер> освободил прибор <имя> или транзакт <номер> освободил прибор <имя> транзакт <номер> возвращен в прибор <имя> на дооб­работку

outqueue- транзакт <номер> покинул очередь <имя>

inqueue- транзакт <номер> встал в очередь <имя>

seize- транзакт <номер> пытался занять прибор <имя> или транзакт <номер> занял прибор <имя>

enter- транзакт <номер> занял <число> ячеек в накопителе <имя> или транзакт <номер> пытался войти в накопитель <имя>

leave- транзакт <номер> освободил <число> ячеек накопителя <имя> или транзакт <номер> освободил <число> ячеек накопителя <имя>

транзакт <номер> переведен из списка накопителя в current

- sysevent= <событие> systime= <время>

split- для транзакта <номер> ансамбль <номер> создано <число> потомков, которые направлены по адресу <событие>

assemble- начат сбор членов ансамбля <номер> в событии <событие>

транзакт <номер> ансамбль <номер> выведен из модели в событии <событие> или транзакт <номер> ансамбль <номер> выведен из модели в событии <событие> или закончен сбор членов ансамбля <номер> в событии <событие>

parmans- параметру <тип и номер параметра> всех членов ансамбля <номер> присвоено значение <число или имя> <перечень всех членов ансамбля>

priority- всем членам ансамбля <номер> присвоен приоритет <число> <перечень всех членов ансамбля>

accept- транзакт <номер> помещен в список ожидающих сигнала <номер сигнала>

send- по сигналу <номер сигнала> транзакты переведены в списокcurrent или нет транзактов, ждущих сигнала <номер сигнала>

Соседние файлы в папке МиАПО