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

Наука Школе

Что происходит при аварийной остановке программы на Блэкбоксе

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

Общая идея состоит в следующем (см. пример):

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

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

Следует подчеркнуть следующее:

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

Наука Школе