Назад | Содержание| Вперёд 8. 4. Отладка Когда программа не делае...

Назад | Содержание| Вперёд

8. 4.    Отладка

Когда программа не делает того, чего от нееждут, главной проблемой становится отысканиеошибки (или ошибок). Всегда легче найти ошибку вкакой-нибудь части программы (или в отдельноммодуле), чем во всей программе. Поэтому следуетпридерживаться следующего хорошего принципа:проверять сначала более мелкие программныеединицы и только после того, как вы убедились, чтоим можно доверять, начинать проверку большегомодуля или всей программы.

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

Основным средством отладки является трассировка(tracing). "Трассировать цель" означает:предоставить пользователю информацию,относящуюся к достижению этой цели в процессе ееобработки пролог-системой. Эта информациявключает:

Входную информацию - имя предиката и значении аргументов в момент активизации цели.

Выходную информацию - в случае успеха, значения аргументов, удовлетворяющих цели; в противном случае - сообщение о неуспехе.

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

В промежутке между входом и выходом можнополучить трассировочную информацию для всехподцелей этой цели. Таким образом, мы можемследить за обработкой нашего вопроса на всемпротяжении нисходящего пути от исходной цели кцелям самого нижнего уровня, вплоть до отдельныхфактов. Такая детальная трассировка можетоказаться непрактичной из-за непомерно большогоколичества трассировочной информации. Поэтомупользователь может применить "селективную"трассировку. Существуют два механизма селекции:первый подавляет выдачу информации о целях,расположенных ниже некоторого уровня; второйтрассирует не все предикаты, а только некоторые,указанные пользователем.

Средства отладки приводятся в действие припомощи системно-зависимых встроенныхпредикатов. Обычно используется следующийстандартный набор таких предикатов

:

        trace

запускает полную трассировку всех целей,следующих за trace

.

        notrace

прекращает дальнейшее трассирование

.

        spy( P)                           (следи за Р)

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

.

        nospy( Р)

прекращает "слежку" за Р.

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

Назад | Содержание| Вперёд









Главная | В избранное | Наш E-MAIL | Добавить материал | Нашёл ошибку | Наверх