После написания программы рекомендуется: 1.проверить, что в конце каждого предложения стоит точка; 2.проверить имена и кол-во арг-ов у каждого предиката, включая встроенные, так как неверное имя или пропущенный аргумент дает заведомо неуспешную цель; 3.проверить введенные операторы, их приоритет и ассоциативность, используя display, в сложных случаях поставить скобки.
Наиболее типичным ошибки:
1.после создания или изменения программы не выполняется ее преобразование во внутреннее представление с помощью reconsult. 2.рассмотрены не все случаи для завершения рекурсии или указаны неправильные условия.
3.программа содержит циклические рекурсии.
4.указано неверное кол-во аргументов у функтора, что приведет к неудаче при поиске правила для обработки структуры.
Рез-ом применения программ, содержащих ошибки, обычно является зацикливание или переполнение стека, отрицательные ответы или конкре-тизация переменных не теми ответами, которые ожидались.
Для отладки программ применяется трассировка. В процессе выпол-я программ на языке Пролог могут происходить следующие 4 события: call,exit,fail,redo.
Событие call фиксирует начало попытки Пролога согласовать цель с БД. Печатается ель. Событие exit фиксирует момент, когда некоторая цель только что согласована с БД. Печатается согласованная цепь. Событие redo фиксирует момент, когда система возвращается к цепи, пытаясь пов-торно согласовать ее с БД. Печатается согласованная цепь. Событие fail фиксирует момент, когда попытка согласовать цель с БД заканчивается неудачно. Печатается цель.
Режим трассировки включается с помощью предиката trace, а выключ-ся notrace. При наступлении события Пролог печатает цель и ожидает ввода команды. Можно ввести одну из следующих команд: h[elp]-помощь; пробел – переключить окна; c[reep] или Enter – идти к следующему событию; s[kip]
или Esc – не останавливаться до наступления события exit или fail для текущей цели (рекомендуется использовать для уже отлаженных предика-тов); a[bort] – завершить выполнения программы. В Прологе существует также другие команды и дополнительные предикаты для отладки по контрольным точкам.