Представляю вам небольшой отладчик для Битрикса. Надоело мне все время писать print_r, или использовать навешанную на горячую клавишу самописную функцию или участок кода аля if($USER->GetID()==15){...}, в которую все равно приходилось вписывать имя переменной или массива. И объединил я все это в BXDebugger v.1.0.0
Функционал дебаггера:
установка множества точек остановки в скрипте;
прерывание скрипта только для определенного пользователя, прозрачная работа скриптов для других пользователей;
добавление/удаление переменных в список отслеживаемых;
Шаг 2. Включение/Выключение отладчика. После того как вы подключили файлы отладчика в init.php, в публичной части сайта на "Панели инструментов" рядом с кнопкой "Выйти" появится зеленая кнопка "START DEBUG" (см. рисунок ниже).
После включения отладчика появится кнопка выключения и две кнопки перехода по шагам, об этом чуть позже.
Шаг 3. Добавление точки остановки в исходный код. Для примера откроем страницу index.php и добавим туда такой код:
функция dbg - вызывает остановку сценария в месте где она вызвана. На вход она получает ID или Login пользователя, под которым вы работаете (обязательно с правами администратора) и массив переменных среди которых будет произведен поиск. Теперь сценарий будет прерван только для пользователя, который указан в функции dbg.
Шаг 4. Вывод отладочной информации на экран. Для того чтобы отследить значение какой нибудь переменной, необходимо добавить ее в список. Для этого вводим ее имя в поле add variable(array) и жмем ОК. список переменных сохраняется в файле array.php, поэтому нет необходимости добавлять одну и ту же переменную на каждом шаге.
После добавления переменной, она появляется в списке. Слева имя переменной, справа - значение или тип. Переменную можно удалить из списка, нажав на красный крестик справа. Слева от имени меременой, в ромбике стоит буква, обозначающая тип переменной. (String, boolean, double, integer)
Чтобы просмотреть значение переменной в всплывающем окне, кликните на него.
На скриншоте вы можете видеть в правом верхнем углу таинственную надпись mark name: dbg, о ней читайте в Шаге 6.
Шаг 5. Пошаговая отладка. для примера разберем следующий код:
запустите отладчик и понажимайте стрелки "NEXT STEP" и "PREV STEP", вы увидите, что при переходе на следующий шаг, первый вызов функции игнорируется, затем второй и так далее.
Можно dbg(1, get_defined_vars()) вставлять в цикл и следить за переменными цикла, например за изменением arItem в шаблоне компонента news.list
Шаг 6. Вывод имен меток. Что это такое? Рассказываю. Иногда надо поставить разные метки в разных участках скрипта и посмотреть какое условие выполняется. Что мы обычно для этого делаем? Вот что:
if(...)
{
echo "1";
}
else
{
echo "2";
}
можно сделать тоже самое при помощи глобальной переменной $BXD, но при этом получить доступ ко всем объявленным переменным и просмотреть их в окне дебаггера.
Можно писать любое имя метода и вы будете знать где у вас сработала точка остановки.
P.S. Естественно функции dbg() и варианты $BXD->mark1(), $BXD->mark2() и т.д. нужно повесить на горячие клавиши вашего текстового редактора для удобства.
Верстку смотрел в FF3.6 и Opera 9.64, в остальных не знаю как себя ведет. И еще не видел как выводятся кнопки дебаггера с новой админ панелью Битрикса
И если картинки кнопок не отображаются, пошаманьте над .htaccess в /php_interface/
d() - отличная функция, кстати после вашего поста у меня и появилась идея оформить все свои функции в дебаггер. Отличный шаг был добавить кнопку на админ панель для включения выключения вывода отладочной информации.
А ну правильно у меня почему-то не открывается dump.ru Может стоит закинуть ещё на какие-то хранилища. depositfiles.com допустим, если не сложно конечно. Просим.
У меня вопрос об установке 1. Скопировала в php_interface/BXDebugger содержимое архива. 2. Вставила строчку в init.php. 3. Заменила 3ю строчку script.js, как рекомендовали в комментах для работы с Эрмитажем.
Кнопки на панели появились, а вот область для ввода переменных - нет. Получаю js-ошибку $("<div id='BXD' style='width: 100%; position: relative; border: 1px solid #cccccc; background: #ffffff;'></div>") is null
Попробовала вернуть третью строчку на место - "body is null".
Подозреваю, что дело в том, что script.js подключается до тега <html>.
Попробовала перенести подключение дебаггера из php_interface/init.php в bitrix/include.php, но тут начинает ругаться на отсутствие функции AddEventHandler. Как вы думаете, можно ещё что-то сделать, чтобы дебаггер заработал? На всякий случай - это кроссбраузерное решение? У меня Ubuntu, FireFox 3.6 (проверялось также на Opera и Chrome).
Прошу кого-нибудь откликнуться! Автор, к сожалению, молчит. Существует или нет обновленная версия отладчика - хотя бы под битрикс v14. Или проект больше не развивается?
Вот пытаюсь настроить xDebag, для отладки выгрузки. Ни как не могу заставить чтобы сработал xDebag, хотя сам отладчик работает при тесте допустим какого либо функционала. Может кто знает как заставить его чтобы он сработал.
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».