ABSTRACT
Multiverse debugging is an extension of classical debugging methods, particularly adapted to non-deterministic systems. Recently, a language-independent formalization was proposed. Moreover, multiverse debugging is particularly beneficial for specification and design languages, such as UML. However, this method suffers from scalability issues during breakpoint lookup. This problem arises due to the exhaustive exploration performed on the potentially infinite state-space of the system.
In this paper, we tackle this problem by introducing Reduced Multiverse Debugging, an extension proposing a way for the user to define reduction policies used during breakpoint lookup. We enrich the formalization of multiverse debugging with a modular breakpoint lookup strategy, which allows the integration of the reduction policy. We validate our approach by implementing a practical UML Statechart debugger in the AnimUML web framework. We show several ways the reduction can be applied, using methods such as predicate abstraction for breakpoint lookup on an infinite state-space, removing irrelevant variables, or creating classes of equivalent values. Moreover, we show the possibility to integrate probabilistic reduction strategies. Relying on hash collisions, these strategies can be iteratively refined to increase precision.
- Martín Abadi and Leslie Lamport. 1991. The existence of refinement mappings. Theoretical Computer Science 82, 2 (1991), 253--284. Google ScholarDigital Library
- Kelly Androutsopoulos, David Clark, Mark Harman, Jens Krinke, and Laurence Tratt. 2013. State-Based Model Slicing: A Survey. ACM Comput. Surv. 45, 4, Article 53 (aug 2013), 36 pages. Google ScholarDigital Library
- Mojtaba Bagherzadeh, Nicolas Hili, David Seekatz, and Juergen Dingel. 2018. MDebugger: a model-level debugger for UML-RT. Google ScholarDigital Library
- Mojtaba Bagherzadeh, Karim Jahed, Benoit Combemale, and Juergen Dingel. 2019. Live-UMLRT: A Tool for Live Modeling of UML-RT Models. In MODELS 2019 - ACM/IEEE 22nd International Conference on Model Driven Engineering Languages and Systems. IEEE, Munich, Germany, 743--747. Google ScholarDigital Library
- Roberto Baldoni, Emilio Coppa, Daniele Cono D'elia, Camil Demetrescu, and Irene Finocchi. 2018. A Survey of Symbolic Execution Techniques. ACM Comput. Surv. 51, 3, Article 50 (may 2018), 39 pages. Google ScholarDigital Library
- Valentin Besnard. 2020. EMI: An approach to unify analysis and embedded execution with a controllable model interpreter. Ph.D. Dissertation. ENSTA Bretagne.Google Scholar
- Valentin Besnard, Ciprian Teodorov, Frédéric Jouault, Matthias Brun, and Philippe Dhaussy. 2021. Unified verification and monitoring of executable UML specifications. Software and Systems Modeling 20, 6 (01 12 2021), 1825--1855. Google ScholarDigital Library
- Bob Boothe. 2000. Efficient algorithms for bidirectional debugging. In Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation. 299--310.Google ScholarDigital Library
- Erwan Bousse, Dorian Leroy, Benoit Combemale, Manuel Wimmer, and Benoit Baudry. 2018. Omniscient debugging for executable DSLs. Journal of Systems and Software 137 (2018), 261--288. Google ScholarCross Ref
- Edmund M. Clarke, Thomas A. Henzinger, Helmut Veith, and Roderick Bloem. 2018. Handbook of Model Checking (1st ed.). Springer Publishing Company, Incorporated.Google Scholar
- Michael A. Colón and Tomás E. Uribe. 1998. Generating finite-state abstractions of reactive systems using decision procedures. In Computer Aided Verification, Alan J. Hu and Moshe Y. Vardi (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg, 293--304.Google Scholar
- David Darais, Nicholas Labich, Phúc C. Nguyen, and David Van Horn. 2017. Abstracting Definitional Interpreters (Functional Pearl). Proc. ACM Program. Lang. 1, ICFP, Article 12 (aug 2017), 25 pages. Google ScholarDigital Library
- Leonardo de Moura, Soonho Kong, Jeremy Avigad, Floris van Doorn, and Jakob von Raumer. 2015. The Lean Theorem Prover (System Description). In Automated Deduction - CADE-25, Amy P. Felty and Aart Middeldorp (Eds.). Springer International Publishing, Cham, 378--388.Google Scholar
- A. Georges, M. Christiaens, M. Ronsse, and K. De Bosschere. 2004. JaRec: A Portable Record/Replay Environment for Multi-Threaded Java Applications. Softw. Pract. Exper. 34, 6 (may 2004), 523--547. Google ScholarDigital Library
- Susanne Graf and Hassen Saidi. 1997. Construction of abstract state graphs with PVS. In Computer Aided Verification, Orna Grumberg (Ed.). Springer Berlin Heidelberg, Berlin, Heidelberg, 72--83.Google Scholar
- Gerard J. Holzmann. 1996. An analysis of bitstate hashing. Springer US, Boston, MA, 301--314. Google ScholarCross Ref
- Frédéric Jouault, Valentin Besnard, Théo Le Calvar, Ciprian Teodorov, Matthias Brun, and Jerome Delatour. 2020. Designing, Animating, and Verifying Partial UML Models. In Proceedings of the 23rd ACM/IEEE International Conference on Model Driven Engineering Languages and Systems (Virtual Event, Canada) (MODELS '20). Association for Computing Machinery, New York, NY, USA, 211--217. Google ScholarDigital Library
- Naoki Kobayashi, Ryosuke Sato, and Hiroshi Unno. 2011. Predicate Abstraction and CEGAR for Higher-Order Model Checking. In Proceedings of the 32nd ACM SIGPLAN Conference on Programming Language Design and Implementation (San Jose, California, USA) (PLDI '11). Association for Computing Machinery, New York, NY, USA, 222--233. Google ScholarDigital Library
- Naoki Kobayashi, Ryosuke Sato, and Hiroshi Unno. 2011. Predicate Abstraction and CEGAR for Higher-Order Model Checking. SIGPLAN Not. 46, 6 (jun 2011), 222--233. Google ScholarDigital Library
- Leslie Lamport. 1974. A New Solution of Dijkstra's Concurrent Programming Problem. Commun. ACM 17, 8 (aug 1974), 453--455. Google ScholarDigital Library
- Yoann Laurent, Reda Bendraou, and Marie-Pierre Gervais. 2013. Executing and debugging UML models: an fUML extension. In SAC'13 - The 28th Annual ACM Symposium on Applied Computing. ACM, Coimbra, Portugal, 1095--1102. Google ScholarDigital Library
- Bil Lewis. 2003. Debugging Backwards in Time. Computing Research Repository cs.SE/0310016 (10 2003).Google Scholar
- Carmen Torres Lopez, Robbert Gurdeep Singh, Stefan Marr, Elisa Gonzalez Boix, and Christophe Scholliers. 2019. Multiverse Debugging: Non-deterministic Debugging for Non-deterministic Programs. In 33rd European Conference on Object-Oriented Programming. Schloss Dagstuhl-Leibniz-Zentrum fuer Informatik. https://kar.kent.ac.uk/74328/Google Scholar
- Simon Van Mierlo, Yentl Van Tendeloo, and Hans Vangheluwe. 2017. Debugging Parallel DEVS. SIMULATION 93 (2017), 285 -- 306.Google ScholarDigital Library
- Oleg Y. Nickolayev, Philip C. Roth, and Daniel A. Reed. 1997. Real-Time Statistical Clustering for Event Trace Reduction. The International Journal of Supercomputer Applications and High Performance Computing 11, 2 (1997), 144--159. Google ScholarDigital Library
- OMG. 2017. Unified Modeling Language. https://www.omg.org/spec/UML/2.5.1/PDFGoogle Scholar
- Corina S. Păsăreanu, Radek Pelánek, and Willem Visser. 2005. Concrete Model Checking with Abstract Matching and Refinement. In Computer Aided Verification, Kousha Etessami and Sriram K. Rajamani (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg, 52--66.Google Scholar
- Gary L. Peterson. 1981. Myths About the Mutual Exclusion Problem. Inf. Process. Lett. 12 (1981), 115--116.Google ScholarCross Ref
- Guillaume Pothier, Éric Tanter, and José Piquer. 2007. Scalable omniscient debugging. Sigplan Notices - SIGPLAN 42, 535--552. Google ScholarDigital Library
- Tillmann Rendel, Klaus Ostermann, and Christian Hofer. 2009. Typed Self-Representation. In Proceedings of the 30th ACM SIGPLAN Conference on Programming Language Design and Implementation (Dublin, Ireland) (PLDI '09). Association for Computing Machinery, New York, NY, USA, 293--303. Google ScholarDigital Library
- Grigore Roşu and Traian Florin Şerbănută. 2010. An overview of the K semantic framework. The Journal of Logic and Algebraic Programming 79, 6 (2010), 397--434. Membrane computing and programming. Google ScholarCross Ref
- M. Saxena. 2018. A Language Independent Debugger Semantics Based Debugging in K. Master's thesis. University of Illinois at Urbana-Champaign. https://www.ideals.illinois.edu/handle/2142/101590Google Scholar
- Ulrich Stern and David L. Dill. 1995. Improved probabilistic verification by hash compaction. In Correct Hardware Design and Verification Methods, Paolo E. Camurati and Hans Eveking (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg, 206--224.Google Scholar
- William Visser, SeungJoon Park, and John Penix. 2000. Using Predicate Abstraction to Reduce Object-Oriented Programs for Model Checking. In Proceedings of the Third Workshop on Formal Methods in Software Practice (Portland, Oregon, USA) (FMSP '00). Association for Computing Machinery, New York, NY, USA, 3--182. Google ScholarDigital Library
- P. Wadler and S. Blott. 1989. How to Make Ad-Hoc Polymorphism Less Ad Hoc. In Proceedings of the 16th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (Austin, Texas, USA) (POPL '89). Association for Computing Machinery, New York, NY, USA, 60--76. Google ScholarDigital Library
Index Terms
- Practical multiverse debugging through user-defined reductions: application to UML models
Recommendations
Temporal Breakpoints for Multiverse Debugging
SLE 2023: Proceedings of the 16th ACM SIGPLAN International Conference on Software Language EngineeringMultiverse debugging extends classical and omniscient debugging to allow the exhaustive exploration of non-deterministic and concurrent systems during debug sessions. The introduction of user-defined reductions significantly improves the scalability ...
Debugging non-deadlock concurrency bugs
ISSTA 2013: Proceedings of the 2013 International Symposium on Software Testing and AnalysisConcurrency bugs are difficult to debug because of nondeterministic behaviors of concurrent programs. Existing fault-localization techniques for non-deadlock concurrency bugs do not provide the comprehensive information to identify and understand the ...
Advanced debugging techniques to identify concurrency bugs in actor-based programs
SPLASH Companion 2017: Proceedings Companion of the 2017 ACM SIGPLAN International Conference on Systems, Programming, Languages, and Applications: Software for HumanityActor-based programs are not exempt from concurrency bugs. Inspiring contributions for debugging actor-based programs have been developed, however there is no approach that reliably identifies the root cause of complex concurrency bugs. Solving this ...
Comments