Сегодня: 21:11:2024 Доброго вам дня!

I live ExBB and CMS Limbo!  I live ExBB and CMS Limbo!
Логин :
Пароль :
Регистрация?  Забыли пароль? 
 


 Страниц (1): [1]   

> Без описания

  Супермодератор
Отправлено: 12 января 2018 — 12:17
ответить цитировать Post Id


 Покинул технарь
Профессионал
Сообщений: 1825
Регистрация: 12.2011

В тот момент когда размер исходного кода PHP-приложения переваливает за несколько тысяч строк и на этапе тестирования в нем выявляются логические ошибки, то приходится прибегать к отладке.

Часто для этого используются конструкции и функции языка в разных сочетаниях:
code:
echo, exit, var_dump(), print_r()

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

В PHP нет встроенных средств отладки, но можно использовать внешние отладчики, подключаемые как отдельные расширения (например xdebug, DBG, Zend Debugger). В NuSphere PhpED используется расширение DBG, которое по совместительству является ещё и профайлером.

Отладчик в PhpED по праву именуется интерактивным. Он поддерживает отладку WEB-приложений по следующей схеме:
  • Запускаем отладчик.
  • Переходим в интересующий нас участок кода и устанавливаем breakpoint.
  • Открываем браузер.
  • Запускаем скрипт используя адресную строку браузера или отправив данные через форму.
  • Отладчик вываливается на установленной точке останова, пропустив весь код до нее.
    Далее мы можем просматривать значение переменных и выражений, историю вызова функций и т. д.

В этой небольшой статье я расскажу как настроить отладку с ипользованием PhpED и OpenServer. Те моменты которые касаются настройки OpenServer могут быть применены к любому WEB-серверу из коробки (Denwer, XAMPP) или установленному на *nix-системе. Итак, если все умственные усилия обнаружить ошибку закончились безрезультатно и хождение по форумам с просьбой разобраться почему неправильно работает скрипт потерпели фиаско, то переходим к настройке дебаггера.

Инструкция приведена для актуальных (последних) версий программ на момент написания статьи:
  • Microsoft Windows 7 SP1 x64 (en)
  • NuSphere PhpED Professional v7.0
  • OpenServer v4.6.1 (PHP v5.3.16)

Настройка
Находим в каталоге с установленной IDE DLL-файл с именем «dbg-php-X.X.dll», где X.X версия поддерживаемого интерпретатора PHP, установленного на сервере. В моём случае это будет «dbg-php-5.3.dll». Библиотека должна находится в каталоге «%PROGRAMFILES%\NuSphere\PhpED\debugger\server\Windows\x86_VC9\», т. к. PHP v5.3.16 скомпилирован с поддержкой VC90 runtime.
Копируем его в каталог «%OpenServer%\modules\php\PHP-5.3.16\ext\», где %OpenServer% — директория с установленным OpenServer.
Редактируем php.ini. Открываем контекстное меню OpenServer в системном трее. Далее: Дополнительно > Конфигурация > PHP-5.3.16. Добавляем строку содержащую: extension=dbg-php-5.3.dll
Сохраняем и закрываем текстовый файл.
Перезапускаем сервер.
В любом скрипте делаем вызов phpinfo(). И убеждаемся, что на странице диагностики присутствует блок, посвященный библиотеке dbg-php-5.3.dll:


В настройках проекта (Project > Project Properties) указываем: Root directory — корневой каталог проекта на компьютере; Run mode — HTTP mode (3rd party WEB server); Root URL — URL проекта по которому он доступен. Сохраняем изменения.


Я предпочитаю не использовать глобальные настройки дебаггера в программе, поэтому в настройках отладчика проекта (вкладка Debugger) включаю использование специфических настроек отладки для проекта. И обычно снимаю флажок остановки на первой инструкции скрипта (Break on start). Как видно, там же можно указать на каких ошибках передавать управление отладчику.


Установив точку останова, а так же введя в строке браузера URL-проекта. И дополнив URL GET-параметром DBGSESSID со значением большим нуля (ID сессии), мы поймаем исключение. В дальнейшем до момента закрытия вкладки браузера этот параметр можно исключить, т. к. он будет сохранен в cookie.
httр://example.com/?DBGSESSID=1


В окне Locals видны значения всех локальных переменных.


Остановить отладку можно по хоткею Ctrl + F2.

Совет - не забываем включить отображение всех ошибок (E_ALL). В скрипте (не сработает при синтаксических ошибках): error_reporting(E_ALL);
Или в .htaccess: php_flag display_errors 1

Исходник статьи смотрим здесь.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Всё подряд »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Все гости форума могут отвечать на сообщения в этом разделе.
 


> Создание ответа в тему "Отладка PHP-приложений с помощью PhpED IDE"
Имя: Гость   Вы зарегистрированы?
Помощь по ExBBCodes
С помощью кодов можно очень легко применять различные виды стилей к выделенному тексту.
Смайлики

smilie smilie smilie smilie smilie
smilie smilie smilie smilie smilie
smilie smilie smilie smilie smilie

все смайлики
Опции сообщения Вы хотите разрешить смайлики в этом сообщении?
   

> Темы, похожие на тему "Отладка PHP-приложений с помощью PhpED IDE"
Темы Форум Информация о теме Обновление
Ключи для NOD32
Регулярно обновляемый список ключей для антивируса
Всё подряд Ответов: 2
Автор темы: технарь
7 апреля 2018 — 20:53
Автор: Farmer
ExBB и режим SAFE MODE
Работа на хостинге с включенным защищенным режимом
ExBB Community Ответов: 1
Автор темы: технарь
14 марта 2017 — 17:40
Автор: технарь
Моды для SMF
Описание наиболее часто применяемых модов.
SMF Community Ответов: 1
Автор темы: технарь
8 сентября 2014 — 13:32
Автор: технарь
 


Powered by ExBB v1.1.180311