Ада-95. Компилятор GNAT



         

Директивы компилятора для отладки - часть 2


В данном случае, если предположить, что процедура 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.




Содержание  Назад  Вперед