Affiliation:
1. Computer Science Dept., University of Southern Maine, Portland, ME
Abstract
This paper discusses our research into algorithms for creating an
efficient bidirectional debugger in which all traditional forward movement commands can be performed with equal ease in the reverse direction. We expect that adding these backwards movement capabilities to a debugger will greatly increase its efficacy as a programming tool.
The efficiency of our methods arises from our use of event counters
that are embedded into the program being debugged. These counters are
used to precisely identify the desired target event on the fly as the
target program executes. This is in contrast to traditional debuggers that may trap back to the debugger many times for some movements. For reverse movements we re-execute the program (possibly using two passes) to identify and stop at the desired earlier point. Our counter based techniques are essential for these reverse movements because they allow us to efficiently execute through the millions of events encountered during re-execution.
Two other important components of this debugger are its I/O logging and checkpointing. We log and later replay the results of system calls
to ensure deterministic re-execution, and we use checkpointing to bound the
amount of re-execution used for reverse movements. Short movements generally appear instantaneous, and the time for longer movements is usually bounded within a small constant factor of the temporal distance moved back.
Publisher
Association for Computing Machinery (ACM)
Subject
Computer Graphics and Computer-Aided Design,Software
Cited by
14 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Multiverse Notebook: Shifting Data Scientists to Time Travelers;Proceedings of the ACM on Programming Languages;2024-04-29
2. Practical multiverse debugging through user-defined reductions;Proceedings of the 25th International Conference on Model Driven Engineering Languages and Systems;2022-10-23
3. Static versus dynamic reversibility in CCS;Acta Informatica;2019-11-07
4. A fork() in the road;Proceedings of the Workshop on Hot Topics in Operating Systems;2019-05-13
5. Omniscient debugging for executable DSLs;Journal of Systems and Software;2018-03