просто викликайте цю функцію в місцях коду, де потрібно показати як інтерпритатор дійшов до цього місця.
Ось ще парочка альтернатив із зупинкою скрипта:
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