A Case Study for Reversible Computing: Reversible Debugging of Concurrent Programs

A Case Study for Reversible Computing: Reversible Debugging of Concurrent Programs
复制标题

可逆计算案例研究:并发程序的可逆调试

DOI:
10.1007/978-3-030-47361-7_5
复制
发表时间:
2020
期刊:
Lecture Notes in Computer Science
影响因子:
--
通讯作者:
Vidal Germ?n
Vidal Germ?n
中科院分区:
--
文献类型:
--
作者:
Hoey James;Lanese Ivan;Nishida Naoki;Ulidowski Irek;Vidal Germ?n

文献摘要

相似文献

可逆计算允许人们不仅在通常的正向运行程序,而且还可以向后运行程序。可逆计算的一个主要应用领域是调试,在调试中,人们可以使用可逆性从可见的不当行为返回到导致它的错误。虽然顺序系统的可逆调试已被很好地理解,但并发和分布式系统的可逆调试较少得到解决。我们在这里提供了两种调试并发程序的方法,一种基于回溯,它以相反的执行顺序撤消操作,另一种基于因果一致性,它允许人们撤消任何操作,前提是它的后果(如果有的话)是事先撤消的。第一种方法处理具有共享内存的命令式语言,而第二种方法考虑函数式消息传递语言Erlang的核心。这两种方法都有坚实的正式基础。
Reversible computing allows one to run programs not only in the usual forward direction, but also backward. A main application area for reversible computing is debugging, where one can use reversibility to go backward from a visible misbehaviour towards the bug causing it. While reversible debugging of sequential systems is well understood, reversible debugging of concurrent and distributed systems is less settled. We present here two approaches for debugging concurrent programs, one based on backtracking, which undoes actions in reverse order of execution, and one based on causal consistency, which allows one to undo any action provided that its consequences, if any, are undone beforehand. The first approach tackles an imperative language with shared memory, while the second one considers a core of the functional message-passing language Erlang. Both the approaches are based on solid formal foundations.