Нет, это не имеет никакого отношения ни к доктору Кто, ни к Х. Дж. Уэллсу, ни к конденсатору потока (погуглите!). Это лучшая технология отладки, которую вы можете получить, и она появится в Firefox (мы надеемся).
В наши дни вы можете предположить, что на планете нет никого, кто отказался бы от инструмента, который помогает им программировать, но вы ошибаетесь. Есть люди, которые программируют, не используя ничего, кроме командной строки, и избегают отладчиков, считая их злым соблазном собирать слишком много информации и тратить время впустую. Я не шучу.
Когда вам предстоит вступить в бой, вы получите самое лучшее оружие. Когда вы переходите к коду, вы делаете то же самое, и отладка путешествия во времени обещает быть лучшей.
Это недавнее нововведение, хотя идея несложная. Что сложно, так это реализовать. Когда вы используете отладчик, основная идея состоит в том, что вы устанавливаете точку останова там, где, по вашему мнению, может быть проблема. Если вы правы, вы должны обнаружить некоторое несоответствие в значениях переменных или некоторую ошибку, такую как неправильное имя файла, деление на ноль, несуществующий элемент массива и так далее. Часто причина проблемы очевидна, и как только вы обнаружите ошибку, вы будете знать, как ее исправить. Это или должен быть стандартный способ отладки программы для любой проблемы, которая не очевидна после нескольких минут размышлений. Однако иногда все немного сложнее. Иногда вы не находите вины, и тогда один из подходов — сделать шаг вперед по программе и посмотреть, как все будет развиваться. Пошаговое переключение — это стандартный метод, но он работает только в том случае, если неисправность находится ниже по потоку от точки останова. Почему не сделать ни шага назад?
Это основная идея отладки путешествия во времени — добавление шага назад в дополнение к шагу вперед. В принципе, вы можете запускать программу вперед и назад и смотреть, что происходит, как если бы это был видеопоток. Хорошо в теории, но очень сложно реализовать на практике, потому что языки программирования обычно имеют побочные эффекты. Побочный эффект — это изменение среды, вызванное выполнением программы. Например, если программа записывает данные в файл, то переход назад означает отмену записи этих данных. Это сложно.
Для веб-страницы, где JavaScript выполняется в песочнице, это должно быть проще. Отладчик путешествий во времени теперь есть в Firefox Nightly, но пока только для Mac. Он использует существующий проект — WebReplay.
По сути, вы можете записывать, что происходит на вкладке, и воспроизводить это вперед или назад:
пауза и шаг вперед или назад
пауза и перемотка к предыдущему состоянию
перемотка на время, когда консольное сообщение было зарегистрировано
вернуться к тому времени, когда элемент имел определенный стиль или макет
перемотка назад к моменту загрузки сетевого ресурса
Также предполагается, что вы можете найти это полезным в производственной среде:
сохранять пользовательские записи при возникновении исключения
просмотреть тестовую запись, когда тест не пройден
легко имитировать и повторно запускать интеграционные тесты
Подчеркивается, что на данный момент это всего лишь эксперимент, который может никогда не закончиться в Firefox, но ясно, что путешествия во времени — это будущее отладки, и другие люди работают над аналогичными проектами, особенно над Microsoft и WebKit.
Если вы хотите узнать больше о том, как это работает, прочтите документацию по WebReplay и ознакомьтесь с докладом Джейсона Ластера, который, кажется, является движущей силой проекта:
Будем надеяться, что он попадет в стабильный Firefox.