♦ Установка уровня сообщений об ошибках
♦ Безопасное программирование для минимизации ошибок:
♦ Подавление сообщений об ошибках
♦ Восстановление после ошибок
♦ Специальная проверка ошибок
♦ Регистрация ошибок
♦ Средства отладки и тестирования:
♦ Средства отладки HTTP типа клиентов telnet и «шпионских» серверов (snoop servers)
♦ Отладка с помощью трассировки посредством phpCodesite
♦ Удаленные отладчики типа BODY и Zend IDE
♦ Тестирование сценариев с помощью phpUnit
Обзор ошибок программирования
РНР, будучи языком сценариев, дает возможность обнаруживать ошибки во время интерпретации программы, что в то же время представляет собой проблему, поскольку сценарии часто выполняются на сервере, а потому не столь доступны для отладки, как обычные автономные программы. Однако класс ошибок, которые могут быть выявлены во время интерпретации сценария, обычно составляет лишь небольшое подмножество тех ошибок, которые могут вкрасться в сценарии. Вот некоторые стандартные ошибки программирования, встречающиеся в коде сценариев РНР:
♦ Синтаксические ошибки
♦ Семантические ошибки
♦ Логические ошибки
♦ Ошибки окружения
Рассмотрим эти ошибки более пристально.
Синтаксические ошибки
Синтаксические ошибки встречаются чаще всего и обнаруживаются проще всего. Эти ошибки возникают вследствие некорректного применения конструкций языка. Возникновение синтаксических ошибок имеет значительные различия в РНРЗ и РНР4. Дело в том, что в РНРЗ каждая строка интерпретировалась, когда до нее доходило выполнение, тогда как в РНР4 перед исполнением компилируются все операторы.
В РНРЗ успешное выполнение программы не гарантировало отсеивание всех синтаксических ошибок. Чаще всего, когда сценарий выбирает особую ветвь выполнения, вскрываются не обнаруженные до того синтаксические ошибки. Проиллюстрируем это на следующем сценарии РНРЗ:
<?php
//Simple_Leap. php
високосность
echo("February days");
s
echo( "February . 1 ■
}
?>
Этот сценарий прекрасно выполняется, когда в содержится значение не високосного года, что происходит в трех случаях из четырех. Однако в блоке кода, обрабатывающем високосный год, есть синтаксическая ошибка - строка аргумента оператора echo начинается двойной кавычкой, но оканчивается одинарной. Такая ошибка очевидна, легко прослеживается и ее легко исправить. Однако при отсутствии хорошей стратегии тестирования она может вызвать неожиданный отказ программы.