"时间旅行调试器"的原理是什么?

Ste*_*n.W 7 javascript c c++ compiler-construction time-travel

嗯......我的老师,我的一些同学和我将构建一个Debugger项目.我们希望我们的调试器是交互式的,也就是说,当输入代码时,结果将在几秒钟后的某个地方显示,并且结果会在输入代码更改时发生变化.另一方面,在运行时,我们可以回滚到前一行或断点.

按照我老师的说法,编程时会涉及"时间旅行调试"技术.我搜索了一些由其他人维护的项目,但我很难理解代码,并且在任何这些README文件中都没有介绍这种技术.

参考:https: //github.com/mattgodbolt/compiler-explorer

ric*_*ici 9

这通常称为"时间旅行调试",通常与"功能反应编程"相关联.(这些是您可以轻松搜索的术语.)在Elm语言博客上有一些合理可访问的文档(例如,时间旅行变得简单),但我建议您从一开始就开始而不是潜入中间并且时间旅行你的理解(一些双关语:-))

严格来说,时间旅行调试是在运行时发生的事情,但是如果您使用函数式语言(例如Haskell,Elm,OCAML或其他各种已经实现了时间调试器的程序)进行编程,则会更容易,并编译这些语言(是的,它们被编译)涉及一些有趣的概念.

Elm编译为javascript,这使得它相对容易实验.

享受项目带来的乐趣.