Интерактивный отладчик Python

Посмотрите, как ваша программа выполнялась во времени

Обычный отладчик показывает, что происходит с программой сейчас.

PyChronicle позволяет увидеть, как она к этому состоянию пришла.

Запустите Python-код, перемещайтесь по истории его выполнения, возвращайтесь к предыдущим состояниям и исследуйте альтернативные ветки исполнения.

Попробовать PyChronicle Не просто выполняйте код. Разбирайтесь, как он работает.
Исследовать

Код меняется постоянно. Почему отладчик показывает только настоящее?

example.pyPython 3.12
numbers = []

for i in range(5):
    numbers.append(i * i)

result = sum(numbers)
resultnumbers = [0, 1, 4, 9, 16]   result = 30

Но программа не появилась в этом состоянии мгновенно.

  1. T+00[]
  2. T+01[0]
  3. T+02[0, 1]
  4. T+03[0, 1, 4]
  5. T+05[0, 1, 4, 9, 16]

Каждая строка постепенно изменяла состояние программы. Обычно эту историю приходится восстанавливать самому — ставить breakpoints, перезапускать код и добавлять print().

PyChronicle сохраняет эту историю за вас.

Вернитесь к любому моменту выполнения

После запуска программы её прошлое не исчезает.

Перемещайтесь назад и вперёд и наблюдайте состояние программы в выбранный момент — без повторного запуска.

PyChronicle 0.7 · ALPHA 3

Python execution, frame by frame.

Core подключёнСемантическийDEMO
СКОРОСТЬ
ВЕТКАmain · #0СЕМАНТИЧЕСКАЯ ИСТОРИЯ13 / 13 HISTORY
MAIN.PY · SOURCE

Код программы

Python 3.12
1numbers = []
2
3for i in range(5):
4 numbers.append(i * i)
5
6result = sum(numbers)
INSTRUCTION  STORE_NAME result<module>
INTERACTIVE DEMO

Попробуйте нажать «Назад»: список numbers вернётся к предыдущему состоянию без перезапуска программы.

Упрощённая демонстрация на заранее подготовленной истории

Что находилось в списке пять шагов назад?

Какое значение было перед вызовом функции?

Что происходило непосредственно перед ошибкой?

Исследуйте не только прошлое, но и возможное будущее

Не только «Что произошло?»«Что произошло бы, если бы здесь всё было немного иначе?»
Полноэкранная карта веток PyChronicle с тремя завершёнными ветками исполнения
PAST · CHANGE · FUTURE

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

Одна программа может иметь несколько историй исполнения.

Ошибка — это не только последняя строка traceback

Traceback показывает место, где проблема проявилась.

История исполнения помогает понять, где она возникла.

Путь исключения связывает место падения с предыдущими вызовами.
EXCEPTION

Неверное значение могло появиться десятки операций назад.

Объект мог быть изменён не там, где вы ожидали.

Функция могла получить данные, уже испорченные предыдущим кодом.

T−03T−02T−01ERROR

Полезно не только для поиска ошибок

01

Когда вы изучаете Python

Циклы, функции, области видимости, изменяемые объекты и вложенные вызовы проще понимать, когда их можно наблюдать во времени.

02

Когда вы разбираетесь в чужом коде

Сначала посмотрите, какие значения появляются, куда передаются и какие функции вызываются. Затем разбирайтесь в реализации.

03

Когда программа просто делает не то

Найдите первый момент, когда реальное состояние начало отличаться от ожидаемого — без десятков print() и перезапусков.

Основной экран PyChronicle: линия времени, код программы, состояние шага и консоль
Весь ход выполнения, исходный код и состояние программы — в одном рабочем пространстве.

Попробуйте посмотреть на Python-программу по-другому

Напишите кодЗапуститеВернитесь назадСоздайте ветку

Исследуйте выполнение программы, а не только её результат.

Открыть PyChronicle