Хабрахабр

PyTrace — Time Travel Debugger для Python

Мне часто приходится сталкиваться с отладкой.

Иногда я ставлю точку останова, но понимаю что уже слишком поздно, и надо начинать все сначала.

Более того, перед началом отладки, я подготавливаю данные, очищаю базу данных от лишних записей. Все для того, чтобы забыть зайти в, на первый взгляд, безобидный метод, и начать весь процес заново.

Усложняется все тем, что приходится работать с унаследованным кодом, который иногда сложно понять.

Возможно ли лучше понимать запутанный код? А что, если мы сможем понимать такой код, быстрее чем тот, кто его написал?

Встречайте,

PyTrace — это трейсер с возможностями Time-Travel Debugging-а

image
Основные отличия от традиционного отладчика:

  1. Сессия записывается одиножды, а воспроизвести ее можно бесконечное количество раз.
  2. Теперь можно не бояться забыть нажать Step Into, всегда можно вернуться назад, и зайти в интересующию функцию.
  3. Нет больше смысла использовать `print`. Все переменные видны в инспекторе на каждый момент времени.

Также, с помощью встроенного Flame Chart-а, можно быстро «нырять» в интересующий метод и смотреть что же там реально происходило:

image

[Command] + Click для того чтоб призумить на интересующей функции
[Shift]+Click на методе, переносит на момент, когда функция вот-вот вернется.

Туториал по горячим клавишам:

(в текстовом виде)

Что записывается во время выполнения:

  1. Локальные переменные
  2. Входящие и возвращаемые значения
  3. Время, с момента начала записи
  4. Стек вызовов

Также, в replay-файл записывается контент исходных файлов, на момент запуска отладчика.

Для того что попробовать на своем проекте:

1. Установить pip-пакет:

pip install pycrunch-trace

2. Добавить декоратор trace на интересующий метод:

from pycrunch_trace.client.api import trace @tracedef run(): some_code()

3. Запустить код!

Реплей будет записан в рабочую директорию. Его можно посмотреть с помощью веб-приложения: app.pytrace.com
(данные никуда не отправляются, вся работа с записью происходит локально в браузере)

Я обычно добавляю @trace аттрибут на методы Django View.

Интерактивное демо

Рекомендую пройти интерактивное демо, для ознакомления со всеми возможностями.

Ссылки

Гитхаб:

Pip-пакет
Веб-приложение для просмотра записанных сессий

Сайт:

https://pytrace.com/

Видео основного функционала:

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть