По какому принципу работает "Time Travel Debugger"?
Хм... Мой учитель, некоторые мои одноклассники и я собираемся построить проект отладчика. Мы надеемся, что наш отладчик является интерактивным, то есть, когда набираются коды, результат будет отображаться где-то через несколько секунд, а результат изменяется при изменении входного кода. С другой стороны, во время работы мы можем выполнить откат к прежней линии или точкам останова.
По словам моего учителя, при программировании будет задействована техника "Отладка во времени". Я искал какой-то проект, который поддерживали другие, но я плохо понимаю код, и ни в одном из этих файлов README нет сведений об этой технике.
2 ответа
Это чаще всего известно как "отладка во времени" и часто ассоциируется с "Функциональным реактивным программированием". (Это термины, которые вы можете легко найти.) В блоге Elm Language есть несколько достаточно доступных документов (например, путешествие во времени стало проще), но я бы посоветовал вам начать с самого начала, а не погружаться в середину и иметь путешествовать во времени ваше понимание (каламбур намеревался:-))
Строго говоря, отладка путешествий во времени - это то, что происходит во время выполнения, но намного проще, если вы программируете на функциональном языке (таком как Haskell, Elm, OCAML или другие, для которых были реализованы отладчики путешествий во времени), и компиляция этих языков (да, они компилируются) включает в себя некоторые интересные концепции.
Elm компилируется в javascript, что позволяет относительно легко экспериментировать.
Веселитесь с проектом.
Отладка во времени также называется обратной отладкой. С точки зрения непрофессионала, вы можете отлаживать одни и те же строки снова и снова (без остановки / перезапуска приложения).
Например, вы отлаживаете метод, который вызвал исключение в строке 10, чтобы найти причину исключения, вы можете снова выполнить этот метод с предыдущей точки, скажем, в строке 4, не перезапуская весь процесс отладки. это все в режиме реального времени и довольно эффективно.
Я использовал эту функцию в Visual Studio.