Reversible debugging of concurrent Erlang programs: Supporting imperative primitives - Inria - Institut national de recherche en sciences et technologies du numérique
Article Dans Une Revue Journal of Logical and Algebraic Methods in Programming Année : 2024

Reversible debugging of concurrent Erlang programs: Supporting imperative primitives

Résumé

Reversible computing is a programming paradigm allowing one to execute programs both in the standard, forward direction as well as backwards, recovering past states. A relevant application of reversible computing is causal-consistent reversible debugging, which allows one to explore concurrent computations backwards and forwards to find a bug. The basic idea is that any action can be undone, provided that its consequences are undone beforehand. This approach has been put into practice in CauDEr, a Causal-consistent reversible Debugger for the Erlang programming language. CauDEr provides the ability to explore a concurrent computation back and forward in a step-by-step way as well as to undo an action far in the past including all and only its consequences (rollback), and to replay an action from a log, together with its causes. CauDEr supports the functional, concurrent and distributed fragment of Erlang. However, Erlang also includes imperative primitives to manage a map (shared among all the processes of a same node) associating process identifiers to names. Here we extend CauDEr and the related theory, including rollback and replay, to support such imperative primitives. From a theoretical point of view, the imperative primitives create different causal structures to those derived from the concurrent Erlang fragment previously handled in CauDEr, yet we show that the main results proved for previous versions of CauDEr are still valid. From a practical point of view, this allows one to debug a larger subset of Erlang programs, as shown with a small case study of a server providing mathematical functionalities.
Fichier sous embargo
Fichier sous embargo
0 4 22
Année Mois Jours
Avant la publication
jeudi 15 mai 2025
Fichier sous embargo
jeudi 15 mai 2025
Connectez-vous pour demander l'accès au fichier

Dates et versions

hal-04575594 , version 1 (15-05-2024)

Licence

Identifiants

Citer

Pietro Lami, Ivan Lanese, Jean-Bernard Stefani, Claudio Sacerdoti Coen, Giovanni Fabbretti. Reversible debugging of concurrent Erlang programs: Supporting imperative primitives. Journal of Logical and Algebraic Methods in Programming, 2024, 138, pp.100944. ⟨10.1016/j.jlamp.2024.100944⟩. ⟨hal-04575594⟩
157 Consultations
10 Téléchargements

Altmetric

Partager

More