Главная страница проекта ИНФОРМАТИКА-21

Наука Школе

Пример аварийной остановки

Пусть имеется следующий модуль, показанный на картинке (текст имеется в пакете русификации):

клик по коммандеру внизу за текстом модуля вызывает процедуру Вызов, которая вызывает свою внутреннюю процедуру ВнутрПроц, которая в свою очередь вызывает процедуру ДругаяПроц. Процедура ДругаяПроц содержит оператор HALT(0), который имитирует аварийную остановку (числовой параметр предусмотрен для удобства программиста и особой роли не играет). Выполнение HALT(0), кроме собственно аварийной остановки, открывает диагностическое окошко примерно следующего вида (Trap = ловушка):

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

Слева и справа от имени каждой процедуры — синие ромбы, являющиеся гиперссылками (гиперссылками являются и черные стрелки; см. об этом дальше).
клик по ромбу слева от имени процедуры — скажем, ДругаяПроц — открывает окошко, в котором показаны значения глобальных переменных модуля, в котором определена данная процедура, в нашем конкретном случае это модуль
Info21Авост:

 

Глобальные переменные модуля объявляются в нем до всех процедур (см. выше текст модуля).
В данном случае интересно посмотреть, как показаны массивы.
Массивы литер
(ARRAY OF CHAR) играют особую роль в Компонентном Паскале, т.к. служат для хранения литерных цепочек. Например, массиву c в тексте модуля была присвоена литерная цепочка "аварийная остановка", которая непосредственно показана в диагностическом окошке.
Все другие массивы трактуются более единообразно. Например, в нашем случае переменная
b это массив из трех целых. клик по любой из черных стрелок раскрывает список значений элементов массива:

клик по любой белой стрелке закрывает список, возвращая картинку в предыдущее состояние. (Черные и белые стрелки — визуальное оформление т.наз. "складок" — folders — стандартного средства, которое можно использовать в любых документах Блэкбокса, в т.ч. в текстах программ, например, для "упрятывания" длинных комментариев или временной вставки/удаления фрагментов программ, предназначенных, скажем, для отладочных проверок и т.п.)

Если же в окошке Trap кликнуть по синему ромбу справа от имени процедуры (скажем, первой в списке), то откроется текст соответствующего модуля (если он еще не был открыт), в котором будет выделен оператор, вызвавший авост, в данном случае это будет оператор HALT(0). Если же Блэкбокс по какой-то причине не найдет текста модуля (например, в случае модуля StdInterpreter в показанной цепочке вызовов), то сначала Блэкбокс предложит программисту самому "вручную" открыть текст модуля (Блэкбокс вызовет стандартный диалог операционной системы для открытия файла). А если программист откажется (Cancel, Отмена и т.п.), то в рабочем журнале появится сообщение "исходник для StdInterpreter не найден".

Главная страница проекта ИНФОРМАТИКА-21

Наука Школе