По умолчанию контролируются все порты, то есть все флажки установлены.




При отключении режима отладки (кнопка Stop) все настройки сбрасываются в исходное состояние.

Кнопки управления трассировкой

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

Для управления трассировкой программы программист может использовать четыре команды, которые выбираются нажатием кнопок Creep, Leap, Skip, Fail.

1. Команда Creep. (Creep - медленно двигаться)

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

2. Команда Leap. (Leap - перепрыгивать)

Эта команда означает переход к ближайшему контролируемому порту ближайшей контрольной точки без вывода информации о промежуточных портах.

3. Команда Skip. (Skip - пропуск, обход)

Эта команда применяется только для входных портов Call и Redo. При ее выборе, отладчик будет безостановочно выполнять программу, пока не дойдет до какого-либо порта выхода (Exitили Fail)для данной цели. Эта команда дает возможность отключить вывод информации при выполнении доказательств вспомогательных целей, даже в установленных контрольных точках.

4. Команда Fail.

Это команда принуждает отладчик перейти к порту Fail текущей цели, т.е. завершить согласование этой цели неудачей.

Замечание.

Некоторые запросы могут иметь несколько ответов. После нахождения первого пользователь может либо продолжить поиск (ввести точку с запятой), либо завершить его (нажав Enter). Эти действия выполняются в окне интерпретатора. Когда включен режим отладки, то вся работа происходит в окне отладчика. При достижении той точки, где решение найдено, создается впечатление, что процесс отладки "зависает", так как при нажатии кнопок управления вычислениями никаких действий не происходит. В этом случае нужно перейти в окно интерпретатора (через список окон в меню Window) и принять решение, продолжать ли поиск других решений.

Содержание отладочной информации

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

[Пробелы] Port: (Номер предложения) Term

Количество пробелов (отступ) в начале сообщения определяет количество предков текущей цели, уже вовлеченных в процесс доказательства.

Пример.

В рассмотренной в задании 2 программе есть утверждение о том, что некоторый профессор X является преподавателем у студента Y, если один работает, а второй учится на одной и той же специальности.

teacher(X,Y):-professor(X,Z),student(Y,Z).

и задан вопрос

?- teacher('Федор Федоров','Иван Иванов').

Тогда первой рассматриваемой целью будет teacher, а второй — professor, причем вторая цель доказывается как вспомогательная для первой (доказательство первой еще не завершено). Поэтому сообщение о втором вызове при выводе будет смещено правее первого:

 

Замечание

Когда отладчик приступает к доказательству очередной цели, он выводит сообщение, типа Calling: teacher / 2.

Port — в общем случае здесь указывается тип порта, для которого выводится отладочная информация. Первоначальное согласование каждой цели включает два действия: CALL и EXIT или CALL и FAIL. Если согласование цели не привело к успеху, но интерпретатор имеет возможность пересогласовать ее, то это выполняется через порт REDO, что соответствующим образом отражается в протоколе трассировки.

Однако, если цель согласовать заново нельзя (предположим, что из базы данных исключен факт для Анны Павловой), то в протоколе выводится сообщение FAIL, а не REDO, а затем регистрируется выход из процедуры согласования цели через порт FAIL. Т.е. сообщения FAIL могут выводиться дважды.

Term — это цель, для которой выполнен вход через порт CALL или REDO.

Номер утверждения — порядковый номер утверждения (факта или правила) в процедуре, которая используется для доказательства цели. Например, (3) в сообщении

означает, что в данный момент из процедуры student взято третье по счету утверждение (а именно, student('Иван Иванов','Информационные системы').

Замечания

1. При отладке имена предикатных переменных заменяются условными обозначениями, которые состоят из буквы H и некоторого целого числа, например H33.

2. При отладке подробная информация о выполнении системных (встроенных) предикатов не выводится, так как это не представляет интереса и для эффективности они реализованы на машинном уровне.

3. После завершения отладки информацию в окне отладки можно, удалить, выделив весь выведенный текст, и нажав кнопку Del. Так как курсор при завершении отладки обычно находится в конце выведенного текста, то выделить весь текст можно комбинацией Ctrl+Shift+Home.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-04-27 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: