Дебагінг - від простого до зручного

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

Ось ще парочка альтернатив із зупинкою скрипта:

foreach ($ trace as $ step => $ a)

варіант з Exception:

foreach ($ trace as $ step => $ a)

throw new Exception ( 'Подивимося трасування стека');

здавалося б краса, що ще треба, але це ще не все. Тобто щоб при помилку викидати Exception автоматично, можна зробити так:

set_error_handler (create_function ( '$ c, $ m, $ f, $ l', 'throw new Exception ($ m);'), E_ALL);

Але, щоб по справжньому відчуваючи все зручність дебагінг, краще використовувати відладчик Xdebug + PhpStorm

1. встановимо xdebug

# Aptitude install php5-xdebug

2. ребутніте апач і перевірте наявність встановленого з поомщі наприклад phpinfo ()

3. Вкажіть свої настройки в конфіг-файл /etc/php5/conf.d/xdebug.ini

p.s. раджу в php.ini виставити html_errors = Off і ось ще мої деякі улюблені настройки:

xdebug.cli_color = 1 - оздоблює консоль
xdebug.remote_host = localhost
xdebug.remote_port = 9001 - для nginx
xdebug.remote_handler = "dbgp"
xdebug.idekey = PHPSTORM - якщо вирішили подебажіть на певному хості

4. знову ребутніте апач. Після цього перейдемо до налаштувань PHPStorm. Заходимо в меню Run-> Edit Configuration і редагуємо PHP Remote Debug.

Дебагінг - від простого до зручного

як бачите, в поле Ide key я вказав теж, що і в настройках, ну а далі клікайте по правій настройки сервера, я її обвів жовтим (див. праворуч вгорі), і перед Вам відкриється таке вікно:

як бачите, я укзано ім'я свого сервера (можна написати просто Вася, це тільки для Вас), і Host: тут я вказав доменне ім'я сайту, який збираюся дебажіть, все інше в мене вже було вибрано.

мені зручніше за допомогою розширення під браузер Chrome.

Власне все готово для тестування, давайте тепер спробуємо цю справу.

1. у верхній панелі PhpStorm клікніть на кнопку "Listen PHP debug connections" вона виглядає так

2. в коді свого сайту, в будь-якому рядку ставимо крапку зупинки (Break point), клікнувши праворуч від номера рядка.

Дебагінг - від простого до зручного

3. в браузері відкриваємо наш сайт, в моєму випадку домен www.site.lebnik і в панелі браузера кликаю кнопку жучка і вибираю Debug

4. поновіть сторінку Вашого сайту і дивіться в PhpStorm, він зупинить PHP-скрипт в зазначеному Вами місці і покаже Вам Трейс та параметри (дані):

Дебагінг - від простого до зручного

ось і всі справи, спробуйте, це дійсно зручно!

p.s. а щоб дебажіть запущений скрипт в консолі, введіть:

$ Export XDEBUG_CONFIG = "idekey = PHPSTORM"

і потім запускайте свій скрипт:

$ Php -e /home/www/test.php

Але, деякі збоченці як я, можуть захотіти запустити скрипт по протоколу http, а зробити це можна так:

Або через cookies.txt файл з таким вмістом:

www.site.ru FALSE / FALSE 1379142491 XDEBUG_SESSION PHPSTORM

а тепер викликаємо наш скрипт:

проте варто пам'ятати, що POST не пройде, тому що wget не підтримує multipart / form-data

Оскільки по-замовчуванню сервіс php5-fpm крутиться на 9000 порту, то поміняємо для xdebug порт наприклад на 9089:

після чого слід перезапустити FPM

service php5-fpm restart

і в PhpStorm пропишемо 9089 ось тут:

Дебагінг - від простого до зручного

p.s. в якийсь момент у мене якось косячную стала працювати зв'язка xdebug + PhpStorm, на першому рядку PhpStorm ловив виклик з консолі, я міг йти далі по кроках і навіть завершити виклик, але брейкпоінти не спрацьовували, тому, довелося на віртуальну Debian ставити GUI:

aptitude install xorg openbox menu obconf obmenu
startx

і яву для PhpStorm:

aptitude install openjdk-7-jdk

Схожі статті