«Расширенная отладка» для InstantCMS 2.14.1 (v.14.1.0)

+14
901
Как говорят у нас в Украине: «Лучше 100 раз пощупать, чем один раз услышать». Поэтому представляю возможность наглядно «пощупать» работу Двойки. 😊

Новая, полностью переписанная версия «Расширенной отладки» на базе дефолтной отладки 2.14. Благодаря изменениям в Двойке за последние годы и мудрым подсказкам Fuze теперь она сделана компонентом, работающим в двух режимах: стандартном — практически без изменения ядра, и полном — с патчами ядра для сбора дополнительных отладочных данных.


Если вы ещё не знакомы с «Расширенной отладкой», то можете почитать описание её возможностей и примеры её использования.

Отличия от предыдущих версий:
• Полностью переписан код компонента. Вывод инфы и служебные функции теперь не требуют правок ядра, а выполняются через существующие хуки системы
• Поэтому появилась возможность работы в двух режимах
• Более строгое разделение кода на фронтенд/бекенд, шаблоны, стили, файлы языков
• За счёт этого полностью настраиваемый вид вывода
• Более наглядный вид основной таблицы
• Более наглядные и настраиваемые строки лога для всех учитываемых событий
• Многоуровневый лог с подсветкой и поиском парных строк (начало и окончание события лога) кликом мышки
• Более наглядный, сворачиваемый вывод данных и результатов операций с отступами длинных строк и сериализованных массивов
• Доработанная трассировка точек с подсветкой используемой строки вызова
• Теперь учитывается не только рендеринг всего шаблона, а и отдельно всех его частей
• Решён баг с неправильным подсчётом времени вложенных хуков
• Более удобная функция для контрольных точек в любом месте кода dbg(‘Название точки’, ‘Данные для вывода’) без правки index.php
• Более удобная форма настроек отладки
• Более наглядная, сворачиваемая, русифицированная панель текущих настроек
• Предупреждение про отключение опции "Показывать только админу"
• Сделан перевод на русский и английский языки надписей или подсказок везде, где это имеет смысл
• Пока не реализован перехват и красивый вывод ошибок PHP (и не знаю, стоит ли его делать)

Кратко про режимы

Стандартный режим
(работает по-умолчанию в основном пакете компонента)
Использует данные, собираемые дефолтной отладкой. Поэтому количество выводимой информации ограничено и её вид иногда упрощён.
Этот режим работает фактически без патчей ядра. К моему большому сожалению, у меня не получилось согласовать с Fuze добавление в Двойку нескольких строк кода для лёгкого переключения между дефолтной и расширенной отладкой выбором в выпадающем списке в Админке, чтобы в стандартном режиме полностью избавиться от всех правок ядра. Поэтому остался только один патч — пришлось заменить файл /system/core/debugging.php на свой модифицированный. Это никак не влияет на работу других скриптов ядра и компонентов, просто создаёт некоторое неудобство пользователям при удалении «Расширенной отладки».

Полный режим
(требует дополнительных патчей)
Полнофункциональный режим с выводом дополнительной информации и новыми возможностями.
Например, в лог и в таблицы выводится полный список всех событий страницы (а не разделённый, как в дефолте), полноценно работают все фильтры лога, подсчитываются все значения в итоговых таблицах, выводятся данные и результаты операций и т.п. Присутствует учёт автозагрузок классов, инклудов и (для версии 2.14.0) операций установки кеша.
Полный режим включается автоматически при замене нужных файлов ядра на файлы с патчами для сбора дополнительной отладочной информации. Скачать их можно на странице описания режимов работы. Там же есть полное описание различий между режимами.

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

Использование на реальных серверах

«Расширенная отладка» — это в первую очередь инструмент для изучения и анализа проектов на локалке, а также для разработки. Поэтому на реальных серверах её стоит использовать только в тестовой версии сайта на этапе выбора/настройки хостинга или в случае поиска причин некоторых проблем.
И хотя при отключении отладки в настройках в Админке она не загружается, а при отключении компонента в списке компонентов его файлы тоже не подключаются, я рекомендую ставить «Расширенную отладку» на работающие сайты только если вы точно понимаете, зачем это делаете и как потом корректно вернуть дефолтную отладку. Старые версии «Расширенной отладки» я много лет использую на реальных сайтах без проблем, но новую пока воздержусь рекомендовать, во всяком случае, пока не будет реализована возможность лёгкого переключения между дефолтной и расширенной отладками в Админке (если это вообще будет).

Примечание к данной версии 14.1.0

Она пока не использовалась на продакшене, это бета-версия для выявления моих возможных ошибок. Пожалуйста, сообщайте мне о выявленных ошибках в этой теме или в личку.

Установка «Расширенной отладки»

Устанавливается обычным пакетом через Админку сайта. Никаких изменений в базе данных, кроме стандартной записи о новом компоненте не производится. Заменяется один системный файл – класс отладки /system/core/debugging.php, а в системные папки добавляются класс конфига отладки и сам конфиг. Поэтому при установке через Админку будет показано предупреждение про изменение системных файлов – это нормально.
При желании получить полнофункциональный режим, нужно вручную или через пакет заменить некоторые файлы ядра на модифицированные. Если вы уже изменяли для себя какие-то из этих файлов, то сделайте сравнение моих версий с вашими файлами и внесите изменения в свои файлы вручную.

При удалении «Расширенной отладки» с сайта нужно:

1. Удалить её как обычный компонент, включая ручное удаление всех её файлов по списку, выводимому в Админке после окончания удаления.
2. Скопировать файл /system/core/debugging.php из архива установщика InstantCMS 2 вашей версии в папку /system/core, заменив им версию от «Расширенной отладки».
3. Если использовались патчи полного режима, то заменить модифицированные файлы ядра на оригинальные файлы вашей версии InstantCMS 2.

Дальнейшая поддержка «Расширенной отладки»

По возможности буду поддерживать компонент в актуальном состоянии. Но даже если я пропаду надолго, отладка будет работать в стандартном режиме на всех новых версиях Двойки, пока не будет сильно изменена система встроенной отладки. А модифицировать несколько файлов ядра может любой начинающий программист простым сравнением различий и переносом их в новые файлы. Все мои правки файлов ядра выделены соответствующими комментариями в коде.

Скачать компонент можно в Каталоге
0
Юран Юран 3 года назад #
Отличная новость! Я несколько раз пытался в познавательных интересах ставить предыдущие версии на тестовый сайт, но почему то все время был белый экран.... а скорее всего там крайняя версия кажется 1.12x а я пихал уже на 1.13 smile Сейчас попробую эту версию на 2.14.1. Вы не забрасывайте это дело, наверняка многие интересуются таким функционалом. В любом случае спасибо за труды!
0
WebMan WebMan 3 года назад #
Спасибо за отзыв!
Если будут вопросы - задавайте.

Еще от автора

Хуки-хухуки: Исключаем неактивных пользователей из списков
Как иногда начинают свой монолог неопытные стендаперы: «У всех в жизни было такое …
«Расширенная отладка» для InstantCMS 2.14.1 (v.14.1.2) – большое обновление для разработчиков
Новые возможности и удобства, облегчающие разработчикам отладку компонентов и шаблонов.
Использование расширенной отладки. Часть 11. Анализ ошибок 403/404 и редиректов
Одной из неудобных задач при отладке для меня является поиск причины ошибки 403/404.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.