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