Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по языку Пролог.doc
Скачиваний:
83
Добавлен:
28.06.2014
Размер:
507.39 Кб
Скачать

6.3. Директивы компилятора и отладка

Турбо Пролог содержит несколько директив компилятора, помогаю­щих вам в процессе отладки. Директивы компилятора можно поместить в начале программы или выбирать их из меню Option/Compiler Directives. Эти директивы предпишут компилятору при трансляции программы выполнить некоторые действия. Директивы отладки Турбо Пролога описаны далее в алфавитном порядке.

Директивы check_determ и nondeterm. Директива check_determ включает проверку неопределенных предложений. Когда применяется директива check_determ, если предложение в вашей программе неопределенное, Турбо Пролог даст во время компиляции предупреждение.

Чтобы предикаты, которые вы построили неопределенными, не отме­чались, можно использовать перед описанием таких предикатов директи­ву nondeterm.

Примечание: Мы настоятельно рекомендуем вам использовать директиву nondeterm для описания неопределенных предикатов, когда вы используете дирек­тиву компилятора check4eterm. Это укажет, какие части вашей программы разработаны так, что она является неопределенной из-за пост­роения, что сбережет время отладки.

Директива diagnostics. Директива diagnostics создает список всех предикатов и определяет, являются ли они локальными, глобальны­ми (из внешнего модуля) или принадлежат к базе данных. Этот список также говорит о том, является ли предикат определенным и дает размер кода, домены аргументов и текущие образцы. Здесь также дается общий размер программы и список ссылочных доменов в модуле.

Это средство полезно для поддержки и документирования больших программ. Директива diagnostics также помогает определить "лишние" предикаты и "ненужные" потоки параметров. Для вывода результатов диагностики на печать или в файл PROLOG.LOG можно воспользоваться меню Printer-Log (Alt-P).

Директива nowarnings. Общей ошибкой при программировании является то, что данная переменная встречается только один раз (чаще всего из-за ошибки написания). Обычно, если вы не нуждаетесь в значении переменной, вы используете переменную без имени (символ подчеркивания). Компилятор обычно отмечает те переменные, которые используются только один раз. Расположив) директиву nowarnings в начале вашей программы, вы можете выключить это предупреждение.

Примечание: Мы рекомендуем вам избегать использование директивы nowarnings без необходимости.

6.4. Сообщения об ошибках во время выполнения программы

Турбо Пролог содержит несколько директив компилятора, которые можно использовать для управления сообщениями об ошибках, имеющих место во время выполнения вашей программы.

Эти директивы позволяют узнать:

будет ли программа создаваться с проверкой переполнения целых значений;

уровень детализации при сообщении об ошибках времени выполнения;

- будет ли программа создаваться с автоматической проверкой стека.

Бы можете расположить эти директивы компилятора а начале нашей программы или выбрать их из меню Option/Compiler Directives (подменю Run-Tine Check или Error Level).

Турбо Пролог содержит директиву errorlevel, которая позволяет управлять тем, насколько подробными будут сообщения об ошибках. Она имеет следующий синтаксис:

errorlevel = d где d - 0, 1, или 2, соответствуют следующим уровням:

0 - На этом уровне генерируется наиболее эффективный код. Это

соответствует стратегии сообщения об ошибках в версии 1.0.

1 - Это уровень, устанавливаемый по умолчанию. Когда возникает

ошибка, Турбо Пролог в окне Message (Сообщение) показывает ее происхождение (имя модуля и включаемый файл, если он присутствует). Показывается также то место, где произошла ошибка, в соответствующем исходном файле, причем это значение выражается в байтах от начала файла.

После того как исходная программа будет загружена в редактор, если вы нажмете Shift-F2, введете это число и снова нажмете Shift-F2, курсор переместится к месту, где произошла ошибка.

2- О некоторых ошибках на уровне 1 не сообщается. На этом уровне включаются сообщения об ошибках по переполнению стека, по переполнению динамически распределяемой области памяти и др.

Вы можете также выбрать уровень сообщения об ошибках из меню Option/Compiler Directives/Error Level. При этом None соответствует уровню 0, Default - уровню 1, Maximum - уровню 2.