В данном случае, если предположить, что процедура Print_To_Log_File используется для сохранения сообщения в каком-либо файле протокола (log-файле), то этот пример сохранит в этом файле протокола сообщение "X is now 5".
Следует также заметить, что действие директивы компилятора Debug
может быть подавлено с помощью директивы Suppress_Debug_Info.
При выполнении отладки программ могут быть полезными еще две директивы компилятора.
Директива компилятора No_Return
может быть использована для указания подпрограмм, которые никогда не завершаются (иначе, не возвращают управление).
Это позволяет подавить соответствующие предупреждающие сообщения компилятора.
Директива компилятора Normalize_Scalars
инициализирует любую переменную, которая не является массивом, записью или тэговой записью, недопустимым значением (если это возможно).
Применение этой директивы позволяет осуществлять проверку правильности инициализации переменных перед тем как они будут использованы (при этом, ее следует размещать в начале подпрограммы или пакета).
В качестве примера, предположим, что существует целочисленная переменная, диапазон значений которой ограничен величинами от 1 до 100.
Обычно Ада не осуществляет установку начальных значений, пока это не указано явно.
При указании директивы Normalize_Scalars, такая переменная будет инициализирована каким-либо начальным значением, величина значения которого будет заведомо находиться вне указанного диапазона значений (например, -1).
Таким образом, попытка использования значения этой переменной без предварительной инициализации приведет к возбуждению исключения CONSTRAINT_ERROR.
Следует заметить, что директива Normalize_Scalars
будет работать лучше если при компиляции исходных текстов использована опция компилятора -gnatVf.