Comments 21
Но ведь это же превосходно.
+7
А чем ограничен размер кусков кода? Выводится вся функция, в которой произошла ошибка?
+1
Красиво и полезно. Убеждаюсь, что не только Ajenti сама по себе «State of the art», но и весь софт, который вы открываете как отдельные продукты. Спасибо вам.
+1
А правда, почему не Sentry?
Sentry тоже в тырнет все загружает (хоть на свой сервер, хоть в getsentry.com), и в код все эти catcher.collect(e) писать не нужно, т.к. клиент работает просто как обработчик для стандартного logging. Это означает, что не только исключения писать можно, но и ворнинги. И что можно записывать какие-то события, возникающие в сторонних библиотеках (там, где код править нехорошо). А на сервере похожие исключения объединяются по группам (если их очень много — то используется семплинг), можно отмечать решенные проблемы, ну и т.д. HTML рендерится на сервере — не нужно его генерить на клиенте и гонять по сети. В python-catcher отчеты по http загружаются — это не очень хорошо, т.к. это тоже может упасть с исключением или повесить процесс; в sentry для этого есть вариант с UDP.
Из преимуществ python-catcher — возможно, отсутствие умного сервера, это да.
Sentry тоже в тырнет все загружает (хоть на свой сервер, хоть в getsentry.com), и в код все эти catcher.collect(e) писать не нужно, т.к. клиент работает просто как обработчик для стандартного logging. Это означает, что не только исключения писать можно, но и ворнинги. И что можно записывать какие-то события, возникающие в сторонних библиотеках (там, где код править нехорошо). А на сервере похожие исключения объединяются по группам (если их очень много — то используется семплинг), можно отмечать решенные проблемы, ну и т.д. HTML рендерится на сервере — не нужно его генерить на клиенте и гонять по сети. В python-catcher отчеты по http загружаются — это не очень хорошо, т.к. это тоже может упасть с исключением или повесить процесс; в sentry для этого есть вариант с UDP.
Из преимуществ python-catcher — возможно, отсутствие умного сервера, это да.
+4
Кстати, аналогичный подход используется в django-debug-toolbar. Очень удобно.
Там кстати показывается только соответствующий вызов в иерархии. А при клике по нему разворачивается кусок функции.
Еще (я так и не смог уловить логику), но некоторые значимые вызовы виделяются относительно остальных.
Мне кажется, так значительно удобнее, т. к. не всегда нужны листинги всех функций в иерархии вызовов. Сделайте их разворачиваемыми тоже.
Пример трейса (кликабельно):
![](https://habrastorage.org/r/w1560/cropped2/8f7/776/b35/8f7776b3559222f1c91dc7597c34a4d4.png)
Там кстати показывается только соответствующий вызов в иерархии. А при клике по нему разворачивается кусок функции.
Еще (я так и не смог уловить логику), но некоторые значимые вызовы виделяются относительно остальных.
Мне кажется, так значительно удобнее, т. к. не всегда нужны листинги всех функций в иерархии вызовов. Сделайте их разворачиваемыми тоже.
Пример трейса (кликабельно):
![](https://habrastorage.org/cropped2/8f7/776/b35/8f7776b3559222f1c91dc7597c34a4d4.png)
0
Debug toolbar там не причем — это встроенный джанговский трейсбэк. А логика проста — не подсвечены встроенные джанговские функции.
+3
Да, действительно, вы правы.
Так привык к этому тулбару, что мой сонный мозг даже не заметил подвоха, когда сочинял комментарий.
> А логика проста — не подсвечены встроенные джанговские функции.
Вы не поверите, но до меня это дошло как раз во время созерцания собственного скриншота. Раньше над этим как-то и не задумывался.
Так привык к этому тулбару, что мой сонный мозг даже не заметил подвоха, когда сочинял комментарий.
> А логика проста — не подсвечены встроенные джанговские функции.
Вы не поверите, но до меня это дошло как раз во время созерцания собственного скриншота. Раньше над этим как-то и не задумывался.
0
Пичалька, что под python-3.2 не заводится и дело не только в импортах (((
+2
Мне больше нравятся трейсбеки веркцойка. Там еще и рабочая консоль для любого фрейма открывается.
+14
Вот это, кстати, фантастика, как круто и удобно. Можно зайти в консоль в любом окружении из трейсбека и потыкаться, посмотреть, что происходило в момент ошибки.
Есть еще для джанги такая потрясная команда runserver_plus из django-extensions, она запускает джанговский сервер с консолью веркзеуга (на случай ошибок).
Есть еще для джанги такая потрясная команда runserver_plus из django-extensions, она запускает джанговский сервер с консолью веркзеуга (на случай ошибок).
0
Для Ruby On Rails кстати есть отличный инструмент Better Errors.
0
Sign up to leave a comment.
Красивые трейсбеки в Python