{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,3,5]],"date-time":"2026-03-05T15:35:52Z","timestamp":1772724952866,"version":"3.50.1"},"reference-count":37,"publisher":"Elsevier BV","license":[{"start":{"date-parts":[[2026,8,1]],"date-time":"2026-08-01T00:00:00Z","timestamp":1785542400000},"content-version":"tdm","delay-in-days":0,"URL":"https:\/\/www.elsevier.com\/tdm\/userlicense\/1.0\/"},{"start":{"date-parts":[[2026,8,1]],"date-time":"2026-08-01T00:00:00Z","timestamp":1785542400000},"content-version":"tdm","delay-in-days":0,"URL":"https:\/\/www.elsevier.com\/legal\/tdmrep-license"},{"start":{"date-parts":[[2026,8,1]],"date-time":"2026-08-01T00:00:00Z","timestamp":1785542400000},"content-version":"stm-asf","delay-in-days":0,"URL":"https:\/\/doi.org\/10.15223\/policy-017"},{"start":{"date-parts":[[2026,8,1]],"date-time":"2026-08-01T00:00:00Z","timestamp":1785542400000},"content-version":"stm-asf","delay-in-days":0,"URL":"https:\/\/doi.org\/10.15223\/policy-037"},{"start":{"date-parts":[[2026,8,1]],"date-time":"2026-08-01T00:00:00Z","timestamp":1785542400000},"content-version":"stm-asf","delay-in-days":0,"URL":"https:\/\/doi.org\/10.15223\/policy-012"},{"start":{"date-parts":[[2026,8,1]],"date-time":"2026-08-01T00:00:00Z","timestamp":1785542400000},"content-version":"stm-asf","delay-in-days":0,"URL":"https:\/\/doi.org\/10.15223\/policy-029"},{"start":{"date-parts":[[2026,8,1]],"date-time":"2026-08-01T00:00:00Z","timestamp":1785542400000},"content-version":"stm-asf","delay-in-days":0,"URL":"https:\/\/doi.org\/10.15223\/policy-004"}],"content-domain":{"domain":["elsevier.com","sciencedirect.com"],"crossmark-restriction":true},"short-container-title":["Future Generation Computer Systems"],"published-print":{"date-parts":[[2026,8]]},"DOI":"10.1016\/j.future.2026.108418","type":"journal-article","created":{"date-parts":[[2026,2,7]],"date-time":"2026-02-07T00:29:46Z","timestamp":1770424186000},"page":"108418","update-policy":"https:\/\/doi.org\/10.1016\/elsevier_cm_policy","source":"Crossref","is-referenced-by-count":0,"special_numbering":"C","title":["A reversible debugger for MPI applications with flexible backends"],"prefix":"10.1016","volume":"181","author":[{"ORCID":"https:\/\/orcid.org\/0000-0002-5990-4157","authenticated-orcid":false,"given":"Stefan","family":"Kuhn","sequence":"first","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Mihkel","family":"Tiks","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Ott-Kaarel","family":"Martens","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0003-1902-9383","authenticated-orcid":false,"given":"Eero","family":"Vainikko","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"78","reference":[{"key":"10.1016\/j.future.2026.108418_bib0001","series-title":"Proceedings of the 2nd ACM International Workshop on Future Debugging Techniques, DEBT 2024","first-page":"16","article-title":"A reversible debugger for mpi applications","author":"Tiks","year":"2024"},{"key":"10.1016\/j.future.2026.108418_bib0002","series-title":"Reversible Computation: Extending Horizons of Computing. Selected Results of the COST Action IC1405 (=Lecture Notes in Computer Science 12070)","author":"Ulidowski","year":"2020"},{"key":"10.1016\/j.future.2026.108418_bib0003","series-title":"2011 IEEE International Symposium on Parallel and Distributed Processing Workshops and Phd Forum","first-page":"2018","article-title":"Communication Optimization Beyond MPI","author":"Friedley","year":"2011"},{"key":"10.1016\/j.future.2026.108418_bib0004","series-title":"Proceedings of the 2007 ACM SIGPLAN PEPM, ACM","first-page":"144","article-title":"A reversible programming language and its invertible self-interpreter","author":"Yokoyama","year":"2007"},{"key":"10.1016\/j.future.2026.108418_bib0005","series-title":"Introduction to Reversible Computing","author":"Perumalla","year":"2013"},{"key":"10.1016\/j.future.2026.108418_bib0006","series-title":"Reversible Computation. RC 2019 (=Lecture Notes in Computer Science 11497)","first-page":"108","article-title":"Reversible imperative parallel programs and debugging","author":"Hoey","year":"2019"},{"issue":"3","key":"10.1016\/j.future.2026.108418_bib0007","doi-asserted-by":"crossref","first-page":"183","DOI":"10.1147\/rd.53.0183","article-title":"Irreversibility and heat generation in the computing process","volume":"5","author":"Landauer","year":"1961","journal-title":"IBM J. Res. Dev."},{"key":"10.1016\/j.future.2026.108418_bib0008","unstructured":"rr: lightweight recording & deterministic debugging, (accessed February 14, 2024). https:\/\/rr-project.org\/."},{"key":"10.1016\/j.future.2026.108418_bib0009","series-title":"Proceedings of the 1988 ACM SIGPLAN and SIGOPS PADD","first-page":"112","article-title":"IGOR: A System for Program Debugging via Reversible Execution","author":"Feldman","year":"1988"},{"issue":"3","key":"10.1016\/j.future.2026.108418_bib0010","doi-asserted-by":"crossref","first-page":"257","DOI":"10.1007\/s00354-018-0038-2","article-title":"Generation of Reversible C++ Code for Optimistic Parallel Discrete Event Simulation","volume":"36","author":"Schordan","year":"2018","journal-title":"New Gener. Comput."},{"issue":"1","key":"10.1016\/j.future.2026.108418_bib0011","doi-asserted-by":"crossref","first-page":"61","DOI":"10.1177\/0037549706065481","article-title":"Optimistic simulations of physical systems using reverse computation","volume":"82","author":"Tang","year":"2006","journal-title":"Simulation"},{"issue":"3","key":"10.1016\/j.future.2026.108418_bib0012","doi-asserted-by":"crossref","first-page":"375","DOI":"10.1145\/568522.568525","article-title":"A survey of rollback-recovery protocols in message-passing systems","volume":"34","author":"Elnozahy","year":"2002","journal-title":"ACM Comput. Surv."},{"key":"10.1016\/j.future.2026.108418_bib0013","unstructured":"L. Nguyen, Setting Up VSCode for MPI programming, (accessed May 16, 2025). https:\/\/medium.com\/@li.nguyen_15905\/setting-up-vscode-for-mpi-programming-b6665da6b4ad."},{"key":"10.1016\/j.future.2026.108418_bib0014","unstructured":"Perforce Software, Inc.The most advanced debugger for hpc computing, Totalview by perforce(accessed February 14, 2024a). https:\/\/totalview.io\/."},{"key":"10.1016\/j.future.2026.108418_bib0015","unstructured":"Arm Limited, Developer store, (accessed February 14, 2024b). https:\/\/store.developer.arm.com\/store\/high-performance-computing-hpc-tools\/arm-ddt."},{"key":"10.1016\/j.future.2026.108418_bib0016","unstructured":"Microsoft, Walkthrough: launching the MPI cluster debugger in visual studio, 2010 (accessed May 16, 2025). https:\/\/learn.microsoft.com\/en-us\/previous-versions\/visualstudio\/visual-studio-2010\/ee441265(v=vs.100)."},{"key":"10.1016\/j.future.2026.108418_bib0017","series-title":"CONCUR 2004 - Concurrency Theory","first-page":"292","article-title":"Reversible communicating systems","author":"Danos","year":"2004"},{"key":"10.1016\/j.future.2026.108418_bib0018","series-title":"Fundamental Approaches to Software Engineering. 17th International Conference, FASE 2014 (Lecture Notes in Computer Science 8411)","first-page":"370","article-title":"Causal-consistent reversible debugging","author":"Giachino","year":"2014"},{"key":"10.1016\/j.future.2026.108418_bib0019","series-title":"Functional and Logic Programming. 14th International Symposium, FLOPS 2018 (=Lecture Notes in Computer Science 10818)","first-page":"247","article-title":"CauDEr: A Causal-Consistent Reversible Debugger for Erlang","author":"Lanese","year":"2018"},{"key":"10.1016\/j.future.2026.108418_bib0020","first-page":"259","article-title":"A Reversible Semantics for Erlang","author":"Nishida","year":"2017"},{"key":"10.1016\/j.future.2026.108418_bib0021","series-title":"IGOR: a System for Program Debugging Via Reversible Execution, SIGPLAN Not","first-page":"112","volume":"24","author":"Feldman","year":"1988"},{"issue":"1","key":"10.1016\/j.future.2026.108418_bib0022","doi-asserted-by":"crossref","first-page":"1","DOI":"10.1145\/357233.357234","article-title":"User recovery and reversal in interactive systems","volume":"6","author":"Archer","year":"1984","journal-title":"ACM Trans. Program. Lang. Syst."},{"key":"10.1016\/j.future.2026.108418_bib0023","unstructured":"Undo Ltd, What is reverse debugging and why do we need it? (accessed April 22, 2025). https:\/\/undo.io\/resources\/reverse-debugging-whitepaper\/."},{"key":"10.1016\/j.future.2026.108418_bib0024","unstructured":"W. Erquinigo, D. Carrillo-Cisneros, A. Tang, Reverse debugging at scale, (accessed April 22, 2025). https:\/\/engineering.fb.com\/2021\/04\/27\/developer-tools\/reverse-debugging\/."},{"key":"10.1016\/j.future.2026.108418_bib0025","unstructured":"D. Marshall, S. Cai, Time travel debugging - overview, (accessed April 22, 2025). https:\/\/learn.microsoft.com\/en-us\/windows-hardware\/drivers\/debuggercmds\/time-travel-debugging-overview."},{"key":"10.1016\/j.future.2026.108418_bib0026","unstructured":"A. Studer, A. Dall\u2019alba, et al., The Official Radare2 Book. Reverse Debugging, (accessed April 22, 2025). https:\/\/book.rada.re\/debugger\/revdebug.html."},{"key":"10.1016\/j.future.2026.108418_bib0027","unstructured":"Record Replay, Inc.Replay documentation, (accessed April 22, 2025). https:\/\/docs.replay.io\/."},{"key":"10.1016\/j.future.2026.108418_bib0028","series-title":"Reversible Computation: Extending Horizons of Computing: Selected Results of the COST Action IC1405 (=Lecture Notes in Computer Science 12070)","first-page":"108","article-title":"A case study for reversible computing: reversible debugging of concurrent programs","author":"Hoey","year":"2020"},{"key":"10.1016\/j.future.2026.108418_bib0029","unstructured":"M. Kerrisk, ptrace(2) - Linux manual page, (accessed February 14, 2024). https:\/\/man7.org\/linux\/man-pages\/man2\/ptrace.2.html."},{"key":"10.1016\/j.future.2026.108418_bib0030","unstructured":"M.J. Eager, Introduction to the DWARF debugging format, (accessed February 14, 2024). https:\/\/dwarfstd.org\/doc\/Debugging%20using%20DWARF-2012.pdf."},{"key":"10.1016\/j.future.2026.108418_bib0031","unstructured":"CRIU, Checkpoint\/restore in userspace, (accessed February 14, 2024). https:\/\/criu.org\/Main_Page."},{"key":"10.1016\/j.future.2026.108418_bib0032","doi-asserted-by":"crossref","unstructured":"A. To\u0161i\u0107, Run-time application migration using checkpoint\/restore in userspace, arxiv: 2307.12113, 2023. 10.48550\/arXiv.2307.12113.","DOI":"10.13052\/jwe1540-9589.2357"},{"key":"10.1016\/j.future.2026.108418_bib0033","series-title":"2009 IEEE International Symposium on Parallel & Distributed Processing","first-page":"1","article-title":"Dmtcp: transparent checkpointing for cluster computations and the desktop","author":"Ansel","year":"2009"},{"key":"10.1016\/j.future.2026.108418_bib0034","series-title":"Proceedings of the 28th International Symposium on High-Performance Parallel and Distributed Computing, HPDC \u201919","first-page":"49","article-title":"MANA for MPI: MPI-Agnostic Network-Agnostic Transparent Checkpointing","author":"Garg","year":"2019"},{"key":"10.1016\/j.future.2026.108418_bib0035","unstructured":"A. Reber, Allow CRIU to be used as non-root with CAP_CHECKPOINT_RESTORE or CAP_SYS_ADMIN, (accessed February 14, 2024. https:\/\/github.com\/checkpoint-restore\/criu\/pull\/1155."},{"key":"10.1016\/j.future.2026.108418_bib0036","series-title":"Proceedings of the ACM SIGPLAN 2000 Conference on Programming Language Design and Implementation, PLDI \u201900","first-page":"299","article-title":"Efficient algorithms for bidirectional debugging","author":"Boothe","year":"2000"},{"key":"10.1016\/j.future.2026.108418_bib0037","unstructured":"Go ProjectThe Go programming language, (accessed February 14, 2024). https:\/\/go.dev\/."}],"container-title":["Future Generation Computer Systems"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/api.elsevier.com\/content\/article\/PII:S0167739X2600052X?httpAccept=text\/xml","content-type":"text\/xml","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/api.elsevier.com\/content\/article\/PII:S0167739X2600052X?httpAccept=text\/plain","content-type":"text\/plain","content-version":"vor","intended-application":"text-mining"}],"deposited":{"date-parts":[[2026,3,5]],"date-time":"2026-03-05T14:36:14Z","timestamp":1772721374000},"score":1,"resource":{"primary":{"URL":"https:\/\/linkinghub.elsevier.com\/retrieve\/pii\/S0167739X2600052X"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2026,8]]},"references-count":37,"alternative-id":["S0167739X2600052X"],"URL":"https:\/\/doi.org\/10.1016\/j.future.2026.108418","relation":{},"ISSN":["0167-739X"],"issn-type":[{"value":"0167-739X","type":"print"}],"subject":[],"published":{"date-parts":[[2026,8]]},"assertion":[{"value":"Elsevier","name":"publisher","label":"This article is maintained by"},{"value":"A reversible debugger for MPI applications with flexible backends","name":"articletitle","label":"Article Title"},{"value":"Future Generation Computer Systems","name":"journaltitle","label":"Journal Title"},{"value":"https:\/\/doi.org\/10.1016\/j.future.2026.108418","name":"articlelink","label":"CrossRef DOI link to publisher maintained version"},{"value":"article","name":"content_type","label":"Content Type"},{"value":"\u00a9 2026 Elsevier B.V. All rights are reserved, including those for text and data mining, AI training, and similar technologies.","name":"copyright","label":"Copyright"}],"article-number":"108418"}}