Десятая, юбилейная версия. Очень много доработок и изменений. Пока описывал использование «Расширенной отладки», в голову приходили мысли и идеи. Вот результат их воплощения.

Если вы не знакомы с «Расширенной отладкой», то можете почитать «Описание её возможностей».
Доработки и изменения в этой версии:
+ Добавил параметры инициализации шаблона в основную таблицу и в лог.
+ Добавил вывод в лог моментов старта виджетов, контроллера и шаблона. Трассировку виджетов перенёс в лог их старта.
+ В логе завершения работы контроллера теперь выводится имя этого контроллера.
+ В логе рендеринга теперь выводится имя шаблона и при старте, и при окончании работы.
+ Добавил вывод информации о событиях и хуках в логе виджетов.
+ В логе виджетов добавил подсчёт и вывод времени получения данных и рендеринга виджетов, а также сообщение о том, производился ли рендеринг виджета.
+ В логе БД добавил вывод результатов SQL-запросов.
+ Добавил в лог событий и хуков опциональный вывод данных этих событий.
+ Добавил в лог операций с кэшем опциональный вывод данных и результатов этих операций.
+ В контрольных точках добавил вывод пикового значения памяти.
+ Во все логи добавил вывод текущего времени скрипта (времени, прошедшего с момента старта скрипта).
+ В основную таблицу добавил значение 'script peak' (пик памяти скрипта за вычетом отладки) и поставил его на первое место.
+ Расширил фильтры для запросов к БД, автозагрузок и инклудов. Теперь фильтр по запрашивающему файлу ищет по трассировке на глубину, заданную в настройках трассировки для этого лога.
+ Добавил фильтр событий/хуков по пути/имени вызывающего файла или класса/функции.
+ Добавил фильтр обращений к кэшу по типу: все/set/get.
+ Добавил фильтр обращений к кэшу по имени ключа.
+ Добавил фильтр обращений к кэшу по пути/имени вызывающего файла или класса/функции.
+ Добавил вывод данных при обращениях к кэшу.
+ Добавил подсчёт отфильтрованных строк лога и вывод их в таблицу фильтров.
+ Добавил подсветку найденного в текстах SQL-запросов и трассировках при использовании фильтров.
+ Добавил подсчёт SQL-запросов с ошибками и предупреждениями (раздельно) и вывод информации об этом в основной таблице в блоке "SQL queries".
+ Полностью переделал вывод параметров, данных и результатов. Более компактный и читабельный вид, добавлены типы значений и подсветка индексов/типов/значений.
+ Добавил подсветку синтаксиса SQL-запросов.
+ Добавил выбор уровня перехвата ошибок PHP (по настройкам сервера или строгий).
+ Добавил подсказки к параметрам соединения с БД в логах.
+ Добавил подсказки к значениям памяти в логах.
+ В верхнем правом углу блока "Текущие параметры отладки" на странице настройки "Отладки" в Админке теперь пишется версия "Отладки".
— Исправил ошибку неправильного расчёта начальной памяти скрипта и памяти отладки.
— Исправил ошибку, при которой не выводились автозагрузки и инклуды, если искомая построка находилась в начале пути к файлу.
* Загрузка языковых констант теперь происходит только при загрузке Админки.
* Изменил отправку уведомлений о критических ошибках на почту. Теперь почта берётся не из профиля пользователя, а из настроек отладки в Админке.
* Удалил из основной таблицы неинформативное значение 'memory_used' (использованная память).
* Сделал более компактный и аккуратный вывод текстов SQL-запросов и перенос длинных данных/результатов.
* Подправил формулировки всплывающих подсказок в меру знания мной и Гугл-транслейтом английского языка.
* Чуток подправил css-стили для более наглядного выделения информации.
* Переписал строки на использование одинарных кавычек.
* Подправил некоторые моменты стиля кода до стандартов Инстанта.
Ещё изменил название с «Класс расширенной отладки» на «Расширенная отладка». Так будет правильнее – это не просто класс, а готовая система.
Теперь о некоторых изменениях чуть подробнее.
Работа с шаблоном в InstantCMS 2 состоит из двух больших этапов. Сначала происходит его загрузка и инициализация с использованием его настроек. А после окончания подготовки данных происходит заполнение шаблона и его вывод на страницу (рендеринг). В версии 9.1 регистрировалась только вторая часть. Теперь фиксируется всё.





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


Спасибо • Mike • за помощь с регулярками!
Поэтому написал свою небольшую функцию. Она «знает» все основные операторы и операции (хотя и чуть меньше, чем "GeSHi", но на демо подсвечивает всё во всех запросах, которые я смотрел), выделяет строки и цифры. Получилось ещё красивее и в десять раз быстрее. Не идеал, конечно, но для большинства запросов – самое оно.

Скачать полную установку и обновление можно в Каталоге.
Также можете скачать и почитать обновлённую инструкцию:
Подробное описание выводимых значений, настроек отладки в Админке и использования точек отладки (htm-файл в архиве)
Спасибо всем за комментарии и оценки. Отдельное спасибо Олег Васильевич я за поддержку! Мне очень приятно осознавать, что мой труд кому-то нужен и полезен.

Если вы не знакомы с «Расширенной отладкой», то можете почитать «Описание её возможностей».
Доработки и изменения в этой версии:
+ Добавил параметры инициализации шаблона в основную таблицу и в лог.
+ Добавил вывод в лог моментов старта виджетов, контроллера и шаблона. Трассировку виджетов перенёс в лог их старта.
+ В логе завершения работы контроллера теперь выводится имя этого контроллера.
+ В логе рендеринга теперь выводится имя шаблона и при старте, и при окончании работы.
+ Добавил вывод информации о событиях и хуках в логе виджетов.
+ В логе виджетов добавил подсчёт и вывод времени получения данных и рендеринга виджетов, а также сообщение о том, производился ли рендеринг виджета.
+ В логе БД добавил вывод результатов SQL-запросов.
+ Добавил в лог событий и хуков опциональный вывод данных этих событий.
+ Добавил в лог операций с кэшем опциональный вывод данных и результатов этих операций.
+ В контрольных точках добавил вывод пикового значения памяти.
+ Во все логи добавил вывод текущего времени скрипта (времени, прошедшего с момента старта скрипта).
+ В основную таблицу добавил значение 'script peak' (пик памяти скрипта за вычетом отладки) и поставил его на первое место.
+ Расширил фильтры для запросов к БД, автозагрузок и инклудов. Теперь фильтр по запрашивающему файлу ищет по трассировке на глубину, заданную в настройках трассировки для этого лога.
+ Добавил фильтр событий/хуков по пути/имени вызывающего файла или класса/функции.
+ Добавил фильтр обращений к кэшу по типу: все/set/get.
+ Добавил фильтр обращений к кэшу по имени ключа.
+ Добавил фильтр обращений к кэшу по пути/имени вызывающего файла или класса/функции.
+ Добавил вывод данных при обращениях к кэшу.
+ Добавил подсчёт отфильтрованных строк лога и вывод их в таблицу фильтров.
+ Добавил подсветку найденного в текстах SQL-запросов и трассировках при использовании фильтров.
+ Добавил подсчёт SQL-запросов с ошибками и предупреждениями (раздельно) и вывод информации об этом в основной таблице в блоке "SQL queries".
+ Полностью переделал вывод параметров, данных и результатов. Более компактный и читабельный вид, добавлены типы значений и подсветка индексов/типов/значений.
+ Добавил подсветку синтаксиса SQL-запросов.
+ Добавил выбор уровня перехвата ошибок PHP (по настройкам сервера или строгий).
+ Добавил подсказки к параметрам соединения с БД в логах.
+ Добавил подсказки к значениям памяти в логах.
+ В верхнем правом углу блока "Текущие параметры отладки" на странице настройки "Отладки" в Админке теперь пишется версия "Отладки".
— Исправил ошибку неправильного расчёта начальной памяти скрипта и памяти отладки.
— Исправил ошибку, при которой не выводились автозагрузки и инклуды, если искомая построка находилась в начале пути к файлу.
* Загрузка языковых констант теперь происходит только при загрузке Админки.
* Изменил отправку уведомлений о критических ошибках на почту. Теперь почта берётся не из профиля пользователя, а из настроек отладки в Админке.
* Удалил из основной таблицы неинформативное значение 'memory_used' (использованная память).
* Сделал более компактный и аккуратный вывод текстов SQL-запросов и перенос длинных данных/результатов.
* Подправил формулировки всплывающих подсказок в меру знания мной и Гугл-транслейтом английского языка.
* Чуток подправил css-стили для более наглядного выделения информации.
* Переписал строки на использование одинарных кавычек.
* Подправил некоторые моменты стиля кода до стандартов Инстанта.
Ещё изменил название с «Класс расширенной отладки» на «Расширенная отладка». Так будет правильнее – это не просто класс, а готовая система.
Теперь о некоторых изменениях чуть подробнее.
Добавил параметры инициализации шаблона
Теперь в суммарной таблице «Отладки» больше нет пустых мест. 😊Работа с шаблоном в InstantCMS 2 состоит из двух больших этапов. Сначала происходит его загрузка и инициализация с использованием его настроек. А после окончания подготовки данных происходит заполнение шаблона и его вывод на страницу (рендеринг). В версии 9.1 регистрировалась только вторая часть. Теперь фиксируется всё.
Добавил вывод в лог моментов старта виджетов, контроллера и шаблона
В этой версии я разделил в логе строки о виджетах, контроллере и шаблоне на две строки: момент старта и окончания обработки. Для наглядности перенёс трассировку виджетов в лог их старта.
Добавил более широкий вывод информации о КТ и операциях
Теперь в зависимости от типа лога выводятся: текущее время с момента старта скрипта, количество и время запросов к БД, автозагрузок/инклудов, событий/хуков, состояние памяти. Например, для КТ вот так:
В логе БД добавил вывод результатов SQL-запросов

Добавил в лог событий и хуков опциональный вывод данных этих событий

Добавил в лог операций с кэшем опциональный вывод данных и результатов этих операций

В основную таблицу добавил значение 'script peak'
В стандартной отладке и в предыдущих версиях расширенной основной цифрой использования памяти скриптом была разность между памятью на момент остановки работы скрипта и стартовым значением. Это не совсем корректно. Так как в реальности скрипт практически всегда использует памяти больше, что видно по более высокому пиковому значению памяти. Поэтому начиная с этой версии основной цифрой использования памяти скриптом будет разница между пиком и стартом.Расширил фильтры ...
Везде, где это имело смысл, сделал максимум фильтров для эффективной выборке по логам. У каждого типа операций свой набор фильтров.В таблице применённых фильтров теперь для каждого фильтра подсчитывается количество найденных строк. А в логах для полной наглядности найденные подстроки выделяются зелёным цветом.


Полностью переделал вывод параметров, данных и результатов
До этой версии вывод параметров, данных и результатов оформлялся функцией PHP print_r. Это было простое решение. Но не настолько наглядное, как мне бы хотелось. Поэтому я немного подумал и написал специальную функцию для обработки вывода функции var_dump. Получилось намного нагляднее и в цвете. Такое оформление занимает чуть больше времени, но за наглядность можно заплатить десятком-другим миллисекунд.Спасибо • Mike • за помощь с регулярками!
Добавил подсветку синтаксиса SQL-запросов
Сначала сделал подсветку с использованием класса "GeSHi", появившемся в InstantCMS 2.3.0, добавив к нему файл описания подсветки для MySQL. Получилось красиво, но очень тормознуто. Подсветка 50 запросов на главной странице демо занимала в три раза больше времени, чем создание всей страницы. Жесть...Поэтому написал свою небольшую функцию. Она «знает» все основные операторы и операции (хотя и чуть меньше, чем "GeSHi", но на демо подсвечивает всё во всех запросах, которые я смотрел), выделяет строки и цифры. Получилось ещё красивее и в десять раз быстрее. Не идеал, конечно, но для большинства запросов – самое оно.

Добавил выбор уровня перехвата ошибок PHP
Раньше в «Расширенной отладке» был только один уровень перехвата ошибок – максимальный. Это приводило к тому, что в логах веб-сервера фиксировались любые, даже самые мелкие предупреждения и примечания. На работающем сайте это избыточно. Поэтому я добавил галку «Включить строгий режим перехвата ошибок для точной отладки», которая включает уровень (E_ALL | E_STRICT). Если эта галка выключена, то перехват ошибок работает по настройкам веб-сервера.Скачать полную установку и обновление можно в Каталоге.
Также можете скачать и почитать обновлённую инструкцию:
Подробное описание выводимых значений, настроек отладки в Админке и использования точек отладки (htm-файл в архиве)
Спасибо всем за комментарии и оценки. Отдельное спасибо Олег Васильевич я за поддержку! Мне очень приятно осознавать, что мой труд кому-то нужен и полезен.
Всегда выглядело смешно и заканчивалось довольно предсказуемым результатом "пошёл в", "сам дурак", "я тебя вертел" и т.д.
Короче, мы тут втроём посоветовались и пришли к выводу что:
1. "расширенная отладка" - самая полезная бесплатная разработка для системы в 2015 году;
2. не награждать ничем её разработчика, а в меру наших возможностей наградить тех кто его поддержал материально.
Постановили:
1. любой шаблон на выбор отсюдова сможет получит тот, кто в течении месяца с этой публикации поблагодарит разработчика наибольшей суммой;
2. точно также сможет получить шабллон некто из "донаторов" не зависимо от суммы донейта (будет определён случайным образом)
Предупреждение: претензии по поводу нечестного определения победителя из пункта 2, раздела "Постановили" этого опуса не будут приниматься к рассмотрению (уж простите, смахлюем))
WebMan, спасибо!
С Наступающими!
Буду разбираться изучать как этим пользоваться.. Но это 1000% что очень реально нужная топовая вещь, так как по другому понять что происходит с сайтом можно только через шамана с бубном =))))
Web Man я не знаю сколько нужно иметь сил и знаний чтобы это все сделать.. скажу так я бы устал описывать Ваше дополнение =))
Для благодарностей нужно где-то указать все возможные кошельки...
Я не за шаблоном пришел не думайте =)
Всех с наступающим!
Единственно, если уж Олег Васильевич я устраивает конкурс, то будет правильно установить какие-то достаточные сроки, после которых будут подведены итоги и розданы призы. И какие-то правила. Например, как поступит владелец призов, если будут два победителя с одинаковыми суммами. Отдаст каждому по шаблону? Или ...? Ждём от него дополнительной информации по этим вопросам.
Если будут совпадающие максимальные суммы донейта, победителем п1 раздела "Итоги" будет приславший его первым.
Покажу, чем Вам, как разработчику шаблонов, может быть полезна "Отладка". Пару примеров. Совсем простой и просто простой.
Предположим, Вы дорабатываете шаблон для виджета категорий контента. И хотите понимать, какие данные можно в нём использовать для вывода или для других манипуляций. Это можно сделать несколькими щелчками мышки.
Установите "Отладку" на демо Двойки стандартным способом. Зайдите в настройки "Отладки" в Админке и убедитесь, что она включена. На вкладке "Виджеты" включите "Показывать виджеты", "Выводить в лог данные и результаты виджетов". В выпадающих списках выберите виджет 'categories' и контроллер 'content'. Сохраните настройки и зайдите на страницу с контентом, где есть виджет "Категории контента". Например, в раздел "Статьи" http://demo/articles.
Под страницей Вы увидите не просто массив с точными индексами для Вашего виджета, а и заполненые значения элементов этого массива. Причём содержимое массива будет актуально для открытой страницы, то есть будет содержать реальные данные, выводящиеся в этом виджете на этой странице. И если в Вашем коде что-то выводится не так, как должно было по Вашему мнению, Вы всегда увидите, есть ли нужные данные на этой странице и если есть, то какие они.
Под спойлером пример - часть этого массива на скрине:
В настройках "Отладки" отключите вывод виджетов, оставшийся из прошлого примера, и убедитесь, что разрешён вывод контрольных точек.
Теперь в файле \templates\default\controllers\content\item_view.tpl.php после строки
Вы наглядно увидите всё содержимое обеих переменных, которое передаётся в шаблон этой страницы:
Надеюсь, теперь Вам будет проще понимать, какие данные передаются в Ваш шаблон, какие элементы массива присутствуют и что именно содержат.