Отладчик (дебаггер ) языка

Комментарий к выходному отчёту

После завершения процесса, приглашение DOS позволяет получить выходной отчёт с именем исходного файла, но с обязательным расширением.LIS, после команды:

TYPE < имя файла.LIS >

Для работы с отчётом используются стандартные методы. Отчёт состоит из двух частей, первая содержит резюме модели, вторая результаты моделирования. Резюме модели состоит из 4 -х секций, в первой строке листинга модели, повторяющейся на каждой странице, записывается номер версии, дата и время моделирования, имя файла. Номера строк и блоков задаются при компиляции. Вторая секция представляет собой перечень объектов, использованных в модели в возрастающем порядке. Секция перекрестных ссылок содержит указание о том, как каждый из объектов описывается в модели. С одной стороны, указания 2-ой и 3-ей секции полезны при отладке, однако когда модель слишком большая, то после отладки возникает желание её уменьшить. Достигается это с помощью операторов NODICT и NOXREF соответственно (см. П.3). В четвёртой секции приводится результат использования памяти.

Результаты моделирования также разделены на 4 секции. В секции времени приведены значения абсолютного и относительного времени в конце моделирования. Вторая секция содержит индекс блоков, включающий в себя имена и номера блоков, число транзактов находящихся в блоке в текущее время и общее число транзактов, прошедших через блок. В третьей секции приводятся суммарные данные о каждом из объектов. Вначале даётся имя или число объектов, затем в графе AVG-UTIL-DURING-TOTAL TIME приводится часть общего времени, когда по объекту собиралась статистика. Графы AVAIL и UNAVL TIME показывают % доступности и недоступности объекта. Графа ENTRIES показывает общее число транзактов, прошедших через объект. Графа AVERAGE TIME/XACT даёт значение среднего времени нахождения транзакта в объекте. Графа CURRENT STATUS характеризует состояние объекта. Четвёртая секция даёт представление о количестве использованных случайных чисел

Интерактивная отладка является одним из преимуществ новой версии, она позволяет осуществлять процесс контроля за исполнением модели и выводит на дисплей статус транзактов и атрибутов во время процесса моделирования. При желании можно контролировать прохождение транзактов от блока к блоку. Для начала сеанса дебаггера в командной строке необходимо напечатать:

< GPSSH filename TV >

Где TV (test video) команда начала сеанса, a filename - имя исходного файла, сообщения появляющиеся на экране такие же, как при моделировании. Экран дебаггера разделён на окна и позволяет рассматривать отдельные части процесса моделирования.

1. Наверху экрана расположено окно исходного файла (Source Window), содержащее номера блоков, текущее число транзактов в блоке, число транзактов вошедших в блок с начала моделирования, коды блоков с операндами и комментарием.

2. В статусном окне (Status Window) приведены значения абсолютного и относительного времени, а также данные об активных транзактах. В данные о транзактах включено: номер активного транзакта (ХАСТ), имя блока, в котором находится транзакт (CURBLK), имя следующего блока, куда должен перейти транзакт (NEXTBLK), время входа в модель (MARK-TIME), время окончания пребывания транзакта в блоке ADVANCE (MOVE-TIME) и уровень приоритета транзакта. Данные, относящиеся к пребыванию транзакта в каком- либо из списков и данные о захвате блоков не рассматриваются.

3. Окно диалога (Dialog Window) служит для осуществления интерактивного режима. Буфер команд и откликов допускает размещение 70 строк. При переходе к режиму дебаггера функциональные ключи и клавиши управления курсором выполняют специальные операции, приведенные в Табл. 4.7

Таблица 4.7

Клавиши Функции
Вверх Прокрутка окна диалога на 5 строк вверх
Вниз Прокрутка окна диалога на 5 строк вниз
Влево Прокрутка окон влево на 20 символов
Вправо Прокрутка окон вправо на 10 символов
F1 Перемещение в начало окна диалога
F2 Расширение окна диалога на полный экран
F3 Перемещение в конец окна диалога
F4 Деление экрана на 3 окна
F5 Прокрутка окон влево на 20 символов
F6 Прокрутка окон вправо на 10 символов
F7 Перемещение вверх окна исходного файла на 1 строку
F8 Не используется
F9 Перемещение вниз окна исходного файла на 1 строку
F10 Команда дебаггера ' STEP I '

При первом включении дебаггера в первых двух окнах появляются только заголовки, так как в модели ещё нет транзактов. Для начала исполнения модели необходимо нажать клавишу F10 (или набрать в командной строке STEP1), что позволяет инициализировать один блок. Окно начального файла позволяет одновременно рассматривать не более 5 блоков.

Рассмотрим теперь основные команды дебаггера.

- Возвращение в DOS осуществляется с помощью команд QUIT и QQ. Команда QUIT выполняется немедленно, если не происходит подготовки выходного файла с расширением LIS. При появления предупреждения у пользователя возникают три возможности: повторить команду QUIT, напечатать RUN (исполнить) или дать разрешение на продолжение, напечатав - CONTINUE. Команда QQ (quit quickly) немедленно прерывает сеанс дебаггера. Обе команды не имеют параметров.

- Команда BREAK или UNBREAK устанавливает (отменяет) точки прерывания на выбранных блоках, что позволяет остановить исполнение модели, когда транзакт сделает попытку войти в этот блок. Информация отражается в окнах дебаггера и появляется символ предупреждения ‘:‘ в командной строке, где можно вводить дополнительные команды. Имеется два вида точек прерывания: глобальные, которые действуют до появления команды их безусловного снятия - UNBREAK и локальные, воздействующие только во время одиночной команды - CONTINUE. Формат команды:

< BREAK blockname >, blockname - имя или номер блока, например:

BREAK LINE или BREAK 5- установить прерывание на блоке 5.

- Команда DISPLAY позволяет отображать информацию о всех объектах, статус модели (время моделирования) и дебаггера (число точек прерывания), аттрибуты транзактов.

Формат команды зависит от информации, которую желательно получить. Так для объектов:

< DISPLAY eclass (emember,...) >

eclass - тип объекта, emember- имя объекта. Объекты допускают сокращение до первых трёх букв, например блоки - BLO, памяти - STO, амперпеременные - АМР и т.д., например, DISPLAY BLO (1,LINE),

Для отображения статуса, точек прерывания, информации о транзактах форматы имеют вид:

< DISPLAY statcode >, < DISPLAY BREAKPOINTS >, < DISPLAY XACT = tnumber >.

- Команда TRAP задаёт 4 типа специальных условий исполнения модели, а команда UNTRAP отменяет их. Команда TRAP (системное прерывание) также может быть глобальной и локальной.

а) Условие CLOCK вводит прерывание отладки до достижения указанного значения абсолютного времени, формат команды:

< TRAP CLOCK = ctime > ctime - значение абсолютного времени.

Отладка становится возможной, когда абсолютное время достигнет или превысит в первой попытке заданное значение. За время моделирования условие может использоваться только один раз.

б) Условие ХАСТ налагает ограничение на номер активного транзакта, исполнение модели приостанавливается и управление передаётся пользователю как только транзакт с указанным номером становится активным, формат команды:

< TRAP XACT = tnumber > tnumber - номер активного транзакта

в) Условие NEXT даёт информацию о транзакте следующем после активного.

г) Условие SYSTEM даёт информацию об активном транзакте. Два последних условия специфичны и в пособии не используются.

- Команды RUN, CONTINUE, STEP используются для запуска или оценки результатов исполнения модели. Команда RUN инициирует процесс моделирования до появления точек прерывания или тренинга. При отсутствии упоминаний об условиях идёт прямое выполнение команды, при задании условий команда RUN становится аналогичной по формату и действию командам BREAK или TRAP. Команда CONTINUE воздействует аналогично команде RUN, но условия прерывания этой команды локальны и действуют только при исполнении этой команды, кроме того, эта команда не может быть использована для исполнения условий CLOCK или ХАСТ. Команда STEP (S) запускает модель или анализирует её исполнение только с определённым числом блоков. По умолчанию число блоков равно 1. Формат этой команды похож на предыдущие команды:

< STEP stepcount > stepcount - максимальное число блоков для исполнения.

- Команда AT устанавливает глобальную точку прерывания и определяет набор команд дебаггера, которые модель выполнит до остановки в точке прерывания. Формат команды

< AT blockname...> blockname - имя или номер блока

command list command list - список команд дебаггера, если команды одинаковы, блоков может быть несколько

END

Введение команды АТ позволяет запомнить набор команд и получать информацию на каждом шаге.В командной строке появляется приглашение @, позволяющее напечатать вид информации, например, DISPLAY FAC.

Второе приглашение @ после создания списка команд снимается: клавишей ENTER, либо командой END в командной строке.

Команды дебаггера могут быть сокращены. В Таблице 4.8 приведены основные команды, их назначение и аббревиатура

Таблица 4.8

Команды Назначение Аббревиатура
BREAK Назначение глобальной точки останова B
UNBREAK Снятие точки останова UNB
TRAP Назначение условий прерывания T
UNTRAP Снятие условий прерывания UNT
RUN Начало ИМ до точки останова R
CONTINUE Начало ИМ до локальной точки останова C
STEP Моделирование на указанное число блоков S
DISPLAY Отображение выбранной информации D
AT Назначение глобальной точки останова или набора выполняемых команд A

Несколько советов по эффективному использованию сеанса дебаггера:

1. Старайтесь до начала моделирования оценить критические точки модели и в них установите точки прерывания. Для каждой из этих точек предусмотрите команду DISPLAY. Используйте команду STEP для уточнения логики модели вблизи этих точек. После отладки удалите точки прерывания. Такая стратегия позволит обнаружить ошибки и верифицировать правильность модели.

2. Сеанс дебаггера не должен быть длинным, поскольку вы можете потерять основную цель и пойти по менее значимым направлениям. После оценки результатов можно выработать стратегию, отличную от первоначальной.

3. Нахождение ошибок и их взаимосвязи может послужить основой для создания робастной модели, которая сможет функционировать корректно при неточных данных.

4. Если есть опасения, что транзакты могут стать источником ошибки, необходимо использовать команду TRAP для определения возможных ошибок при прохождении транзакта от блока к блоку.

5. При отсутствии ясного понимания источника возникновения ошибок можно прибегать к получению промежуточного листинга между сеансами дебаггера или использовать так называемые "грубые" команды, например "STEP 1000".


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: