Abstract
Reversible debugging provides developers with a way to execute their applications both forward and backward, seeking the cause of an unexpected or undesired event. In a concurrent setting, reversing actions in the exact reverse order in which they have been executed may lead to undo many actions that were not related to the bug under analysis. On the other hand, undoing actions in some order that violates causal dependencies may lead to states that could not be reached in a forward execution. We propose an approach based on causal-consistent reversibility: each action can be reversed if all its consequences have already been reversed. The main feature of the approach is that it allows the programmer to easily individuate and undo exactly the actions that caused a given misbehavior till the corresponding bug is reached. This paper major contribution is the individuation of the appropriate primitives for causal-consistent reversible debugging and their prototype implementation in the CaReDeb tool. We also show how to apply CaReDeb to individuate common real-world concurrent bugs.
This work has been partially supported by the French National Research Agency (ANR), project REVER n. ANR 11 INSE 007.
Chapter PDF
Similar content being viewed by others
Keywords
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.
References
Arya, K., Denniston, T., Visan, A.M., Cooperman, G.: Fred: Automated debugging via binary search through a process lifetime. CoRR, abs/1212.5204 (2012)
CaReDeb 0.5.0, a causal-consistent reversible debugger (2013), http://www.cs.unibo.it/caredeb
Chen, S.-K., Fuchs, W.K., Chung, J.-Y.: Reversible debugging using program instrumentation. IEEE Trans. Software Eng. 27(8), 715–727 (2001)
Chronon Systems. Commercial reversible debugger, http://chrononsystems.com/
Cristescu, I., Krivine, J., Varacca, D.: A compositional semantics for the reversible pi-calculus. In: LICS, pp. 388–397. IEEE Computer Society (2013)
Danos, V., Krivine, J.: Reversible communicating systems. In: Gardner, P., Yoshida, N. (eds.) CONCUR 2004. LNCS, vol. 3170, pp. 292–307. Springer, Heidelberg (2004)
Feldman, S.I., Brown, C.B.: Igor: A system for program debugging via reversible execution. In: Workshop on Parallel and Distributed Debugging, pp. 112–123 (1988)
Grishman, R.: The debugging system AIDS. In: AFIPS 1970 (Spring), pp. 59–64. ACM (1970)
King, S.T., Dunlap, G.W., Chen, P.M.: Debugging operating systems with time-traveling virtual machines. In: USENIX Annual Technical Conference, General Track, pp. 1–15 (2005)
Koju, T., Takada, S., Doi, N.: An efficient and generic reversible debugger using the virtual machine based approach. In: VEE, pp. 79–88. ACM (2005)
Lamport, L.: Time, clocks, and the ordering of events in a distributed system. Commun. ACM 21(7), 558–565 (1978)
Lanese, I., Mezzina, C.A., Stefani, J.-B.: Reversing higher-order pi. In: Gastin, P., Laroussinie, F. (eds.) CONCUR 2010. LNCS, vol. 6269, pp. 478–493. Springer, Heidelberg (2010)
LeBlanc, T.J., Mellor-Crummey, J.M.: Debugging parallel programs with instant replay. IEEE Trans. Comput. 36(4), 471–482 (1987)
Lewis, B.: Debugging backwards in time. CoRR, cs.SE/0310016 (2003)
Lienhardt, M., Lanese, I., Mezzina, C.A., Stefani, J.-B.: A reversible abstract machine and its space overhead. In: Giese, H., Rosu, G. (eds.) FORTE 2012/FMOODS 2012. LNCS, vol. 7273, pp. 1–17. Springer, Heidelberg (2012)
Lu, S., Park, S., Seo, E., Zhou, Y.: Learning from mistakes: a comprehensive study on real world concurrency bug characteristics. In: ASPLOS, pp. 329–339. ACM (2008)
Phillips, I., Ulidowski, I.: Reversing algebraic process calculi. J. Log. Algebr. Program. 73(1-2) (2007)
Stanley, T., Close, T., Miller, M.S.: Causeway: a message-oriented distributed debugger. Technical report, HPL-2009-78 (2009), http://www.hpl.hp.com/techreports/2009/HPL-2009-78.html
Undo Software. Commercial reversible debugger, http://undo-software.com/
Visan, A.M., et al.: Temporal debugging using urdb. CoRR, abs/0910.5046 (2009)
Xu, G., Rountev, A., Tang, Y., Qin, F.: Efficient checkpointing of java software using context-sensitive capture and replay. In: ESEC/SIGSOFT FSE 2007, pp. 85–94. ACM (2007)
Zelkowitz, M.V.: Reversible execution. Commun. ACMÂ 16(9), 566 (1973)
Zhang, X., Tallam, S., Gupta, R.: Dynamic slicing long running programs through execution fast forwarding. In: SIGSOFT FSE, pp. 81–91. ACM (2006)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2014 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Giachino, E., Lanese, I., Mezzina, C.A. (2014). Causal-Consistent Reversible Debugging. In: Gnesi, S., Rensink, A. (eds) Fundamental Approaches to Software Engineering. FASE 2014. Lecture Notes in Computer Science, vol 8411. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-54804-8_26
Download citation
DOI: https://doi.org/10.1007/978-3-642-54804-8_26
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-54803-1
Online ISBN: 978-3-642-54804-8
eBook Packages: Computer ScienceComputer Science (R0)