GNAT предусматривает две директивы компилятора, которые могут быть полезны при отладке программ:
pragma Assert (условие); | - | Вставить условие контрольной проверки |
pragma Debug (имя_процедуры); | - | Указание необходимости выполнения вызова отладочной процедуры |
Следует заметить, что для активации использования этих директив, необходимо указать опцию командной строки компилятора -gnata
при компиляции исходных текстов.
В тех случаях, когда при компиляции исходных текстов опция -gnata не указана, GNAT будет просто игнорировать присутствие этих директив.
Таким образом, это позволяет легко компилировать окончательно отлаженную, правильно работающую версию программы, которая предназначена для публичного использования, без необходимости удаления инструкций отладки из исходных текстов программы.
Директива компилятора Assert
позволяет осуществлять проверку истинности некоторых условий в процессе выполнения программы.
Если указанные условия ложны, то осуществляется возбуждение исключения.
Эту директиву удобно использовать при отладке программы когда над разработкой проекта работает несколько программистов, поскольку в таком случае некоторые условия выполнения программы могут изменяться достаточно часто.
Примером использования директивы Assert может служить следующее:
pragma Assert (Screen_Height = 24); |
Здесь, если значение переменной Screen_Height не будет равно 24, то будет возбуждено исключение ASSERT_ERROR.
Директива компилятора Debug позволяет осуществлять вызов процедуры, которая предназначена для отладки.
Например, она может быть использована на этапе отладки для отображения какой-либо внутренней информации, которая может быть полезна для анализа процесса выполнения программы.
Примечательно, что эту директиву компилятора можно поместить в любое место программы, и даже внутрь описания переменной.
Например:
X := 5; pragma Debug (Print_To_Log_File( "X is now" & X'Img )); |