6.13. Наблюдение за выполнением программы на Прологе
В этом разделе описаны встроенные предикаты, которые позволяют наблюдать за выполнением вашей программы. Здесь мы лишь опишем эти встроенные предикаты, а более подробное обсуждение отладки и трассировки программ содержится в гл. 8.
trace
Эффект выполнения предиката trace заключается в установлении режима полной трассировки. Это значит, что после выполнения trace вы получите возможность наблюдать за каждым из четырех основных типов событий [9] , которые происходят с каждым порождаемым вашей программой целевым утверждением.
notrace
Эффект выполнения предиката notrace заключается в отмене режима полной трассировки. Однако сохраняется трассировка, вызываемая наличием контрольных точек (предикат spy ).
spy Р
Предикат spy используется, когда необходимо обратить особое внимание на выполнение целевых утверждений, содержащих конкретные предикаты. Это можно сделать, установив на них контрольные точки. Предикат spy определен как префиксный оператор, и поэтому нет необходимости заключать в скобки его аргумент. Аргументом предиката может быть:
• Атом. В этом случае контрольная точка устанавливается на все предикаты с именем, соответствующим атому, независимо от того, сколько аргументов они имеют. Так, если бы мы имели утверждения для сорт, имеющие как два, так и три аргумента, то целевое утверждение spy сорт вызвало бы установку контрольных точек на оба множества утверждений.
• Структура вида Имя/Размерность, где Имя - это атом, а Размерность - целое число. Эта запись определяет предикат с функтором Имя, число аргументов которого равно Размерность . Так spy сорт/2 вызвало бы установку контрольных точек на целевые утверждения предиката сорт с двумя аргументами.
• Список. В этом случае список должен заканчиваться пустым списком '[]', а каждый элемент списка сам должен быть допустимым аргументом для предиката spy . Пролог установит контрольные точки во всех местах, указанных в списке. Так spy[copт/2, присоединить/3] вызвал бы установку контрольных точек на предикат сорт с двумя аргументами и на предикат присоединить с тремя аргументами.
debugging
Встроенный предикат debugging позволяет увидеть, какие контрольные точки установлены на текущий момент. В качестве подобного эффекта выполнения целевого утверждения debugging печатается список всех контрольных точек.
nodebug
Целевое утверждение nodebug вызывает устранение всех контрольных точек, установленных на текущий момент.
nospy
Подобно spy , nospy является префиксным оператором. Предикат nospy является более селективным, чем nodebug , так как вы можете точно указать, какие контрольные точки должны быть удалены. Это достигается путем указания аргумента, задаваемого в точности в такой же форме, как и для предиката spy. Так, целевое утверждение nospy[обр/2, присоединить/3] приведет к тому, что будут удалены все контрольные точки с предиката обр с двумя аргументами и с присоединить с тремя аргументами.
Опубликовал Kest
July 09 2009 21:08:15 ·
0 Комментариев ·
7050 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.