Улучшенное сообщение об ошибке для Yii
20 июля 2010
Подумал над улучшением и без того довольно неплохих сообщений об ошибках Yii в режиме отладки. Реализовал несколько идей. В итоге получился довольно полезный обработчик. В дополнение к тому, что умеет стандартный:
Умеет показывать параметры stack trace.
Различает статические и динамические вызовы.
Выглядит немного получше.
Для сравнения, вот результаты работы старого и нового обработчиков для одной и той же ошибки.
Опробовать обработчик в деле можно забрав код из SVN.
Стоит ли включать эти изменения в ядро Yii? Что ещё можно доработать?
UPD: включено в состав ядра Yii.
Комментарии RSS по email OK
Супер. Выглядит действительно удобнее.
круто! хочу такие в 1.2
Можно добавить возможность открывать файл в IDE по ссылке.
Для это можно создать ссылки вида:
и/или
Пути используем относительные т.к. в продакшин абсолютные пути отличаются.
Пишим скрипт который из edit:... получает путь к файлу и передает его IDE.
В браузере добавляем обработку протокола edit нашим скриптом.
Enjoy.
Можно использовать не только в отладке. Например на debug панели сайта вывести ссылку на контроллер и шаблон
P.S. Кто знает как в eclipse через cli открывать файл на конкретной строке?
А я покритикую.
Стак трейс стал нагляднее бесспорно, но at в нём полагаю лишним.
Можно и без оступов слева — всё и так по полочкам.
Сейчас обратил внимание, что подсветка строки с ошибкой почти не видна, вот если бы выделить номер строки (00377) в листинге полужирным, а саму строку оставить пусть даже с такой подсветкой, то будет значительно проще ориентироваться.
Описание ошибки ведь уже выделено шрифтом, так что бокс ему вряд ли в чём поможет.
Александр, у меня стойкое ощущение, что подписка на комментарии не работает :)
я бы еще нумерацию обратную сделал.
Блин и почему мне ни то что слева ни то что справа ни о чем не говорит, кроме первой строчки =(
Stack Trace стал нагляднее, бесспорно, но в тоже время очень увеличился в высоту, раньше все умещалось на одной странице и не пришлось бы делать прокрутку
возможно стоит его чуть сжать?
В Kohana v3 поинтереснее будут: тыц :)
Новый экран значительно лучше. Хотя дейтсивтельно имело бы смысл еще и номера строк полужирным выделить.
tipugin
Уже сейчас можно подключить и использовать.
Ti
Попробую… вот только тестировать не на чем.
idle
at разделяет жирный номер и жирный объект.
с отступами ещё соберу отзывы.
с подсветкой хорошая идея.
с боксом поиграюсь.
Подписке давно уже очень плохо :( Сапожник без сапог…
White Shadow
Обратную нумерацию чего?
Serge Bezborodov
Попробую посжимать.
Иван
А что именно интересней?
Из полезного вижу подсветку кода и окружение. Остальное вроде имеется.
Именно так. А что еще надо от хорошего сообщения? :)
Для любого из вызовов, упомянутых в списке, можно посмотреть строки, вызывавшие ошибку, а если переданы параметры - то и их тоже. Ну и конечно подсветка синтаксиса.
PS. Только сейчас обнаружил, что на той ссылке косяк с разворачиванием подробностей (видимо из-за вложения в Userguide), смотреть лучше как-то так.
Да, так смотреть приятней. Спасибо.
Кстати, интересно почему последовательность с нуля начинается?
PHP так нумерует трейс. Я не стал менять.
Так точно лучше. Вообще в трейсе сильно не хватало списка параметров с их значениями. Иногда без этого не понять что же там случилось :)
Ну вообще они там были, но показывалось их явно маловато.
А мне нравится. По поводу at думаю что нужно оставить. А вот про непонятку со строкой в которой ошибка полностью согласен. Надо как-то получше выделить.
именно нумерацию стека вызовов функций я и имел ввиду, что Zend, что в Kohan'a, что в Yii самая верхняя функция выводится как 0, хотя она вызвана последней и по идее она должна иметь максимальный номер.
@White Shadow
Это обратный отсчет от точки останова. В случае ошибки распутываем клубок вызовов, от конца к началу.
@Иван
Обратный отсчет это как раз 18-17... и я не говорю что функции надо пересортировать, просто та которая сейчас имеет номер 0 по логике должна иметь номер 18.
~ так:
18 CDbCommand->queryInterval('fetchAll',2,array())
17 CdbCommand->queryAll()
16 CActiveRecord->query(CDbCriteria, 1)
...
Как уже писали выше смысловая нагрузка у этого номера действительно не большая (и "at" там действительно не нужно), а так сразу видно вложенность, естественно на вкус и цвет.
ЗЫ.
Понравилась идея от Ti (#3) со ссылками на файлы... ушел прикручивать к Kohana)
У меня одного это расширение не завелось?
Вызов:
в итоге: