Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Prolog.doc
Скачиваний:
31
Добавлен:
12.03.2015
Размер:
929.28 Кб
Скачать

Предикаты для работы с контрольными точками

spy(F) Устанавливает контрольные точки для всех процедур с главным функтором F.

spy(F/A) Устанавливает контрольные точки для всех процедур с главным функтором F и арностью А.

spy([F/A,F1/A1,...]) Устанавливает контрольные точки для списка процедур с функторами F, F1 и арностью А, А1 соответственно.

nospy(F) Удаляет контрольные точки из всех процедур с главным функтором F.

nospy(F/A) Удаляет контрольные точки из всех процедур с главным функтором F и арностью А.

nospy([F/A,F1/A1,...]) Удаляет контрольные точки из списка процедур с функторами F, F1 и арностью А, А1 соответственно.

nospyall Удаляет все контрольные точки, существующие в базе данных Пролога.

Режимы, связанные с контрольными точками

В некоторых реализациях Пролога пользователю разрешается выбрать тот режим контрольных точек, при котором происходит ос­танов в любой из точек CALL, FAIL, REDO и EXIT при выполнении Пролог-программы. Это дает возможность пользователю управлять количеством информации, выдаваемой на терминал.

Основные отладочные предикаты

Nodebug Отключает режим трассировки и режим контрольных точек.

Статистическая информация

Иногда пользователю требуется следующая информация:

- сколько времени Пролог-программа выполнялась в системе;

- сколько логические выводов совершила система во время вы­полнения программы. (Замечание. Логический вывод - выполнение одного целевого утверждения Пролога.);

- сколько места занимает база данных Пролога ?

Такую информацию обычно можно получить с помощью встро­енных предикатов. Имена предикатов и их параметры зависят от ре­ализации, но, как правило, они аналогичны именам и параметрам предикатов, описанных ниже.

Встроенный предикат statistics (T,L) конкретизирует перемен­ную Т значением текущего процессорного времени (обычно в милли­секундах), а аргумент L - числом произведенных логических выво­дов. Попытка доказать целевое утверждение statistics (T,L) всегда заканчивается успехом.

Например, требуется определить, сколько времени понадобится программе степень, чтобы возвести 50 в степень 4 (см. гл.10) и вы­дать ответ. Зададим новый предикат время:

время (Время, Счет) :- statistics (Т1,L1),

степень (50,4),

statistics (T2,L2),

Время is T2-T1,

Счет is L2-L1.

При первом вызове предиката statistics переменные Т1 и L1 бу­дут конкретизированы соответствующими значениями. Затем вы­полняются предикат степень(N,P) и определяющие его целевые ут­верждения. При втором вызове предиката statistics переменные Т2 и L2 конкретизируются новыми значениями, полученными после вы­полнения предиката степень(N,Р). Процессорное время, необходи­мое для выполнения, составляет T2-T1 миллисекунд, а количество вызванных целевых утверждений равно L2-L1. Число логических выводов в секунду составляет

1000*L2-L1/T2-T1.

Встроенный предикат core выводит в текущий выходной поток статистическую информацию, относящуюся к использованию памя­ти. Эта информация различается в зависимости от конкретной систе­мы, но приблизительно такова:

- количество свободного пространства, оставшегося в базе дан­ных Пролога (в словах);

- размер локального и глобального стеков (в словах). (Замеча­ние. Локальный и глобальный стеки - динамические внутренние структуры данных, используемые в большинстве реализации Про­лога.)

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]