Proceedings Article10.1145/349299.349339
Efficient algorithms for bidirectional debugging
Bob Boothe
- 01 May 2000
- Vol. 35, Iss: 5, pp 299-310
113
TL;DR: This paper discusses the research into algorithms for creating anefficient bidirectional debugger in which all traditional forward movement commands can be performed with equal ease in the reverse direction and expects that adding these backwards movement capabilities to a debugger will greatly increase its efficacy as a programming tool.
read more
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.
read more
Chat with Paper
AI Agents for this Paper
Find similar papers on Google Scholar, PubMed and Arxiv
Write a critical review of this paper
Analyze citations of this paper to find unaddressed research gaps
Citations
Finding and reproducing Heisenbugs in concurrent programs
Madanlal Musuvathi,Shaz Qadeer,Thomas Ball,Gerard Basler,Piramanayagam Arumuga Nainar,Iulian Neamtiu +5 more
- 08 Dec 2008
TL;DR: For each bug, CHESS consistently reproduces an erroneous execution manifesting the bug, thereby making it significantly easier to debug the problem.
•Proceedings Article
Debugging operating systems with time-traveling virtual machines
Samuel T. King,George W. Dunlap,Peter M. Chen +2 more
- 10 Apr 2005
TL;DR: Substituted phenol/epichlorohydrin/amine adducts as multipurpose, low concentration additives for hydrocarbon fuels, lubricating oils and mixtures thereof.
PinPlay: a framework for deterministic replay and reproducible analysis of parallel programs
Harish Patil,Cristiano Pereira,Mack Stallcup,Gregory Lueck,James Cownie +4 more
- 24 Apr 2010
TL;DR: The design of PinPlay is described, which is an easy-to-use framework for capturing, deterministically replaying, and analyzing execution of large programs with reasonable runtime and disk usage.
239
•Proceedings Article
Configuration debugging as search: finding the needle in the haystack
Andrew Whitaker,Richard S. Cox,Steven D. Gribble +2 more
- 06 Dec 2004
TL;DR: The Chronus tool is presented, which automates the task of searching for a failure-inducing state change and can diagnose a range of common configuration errors for both client-side and server-side applications, and that the performance overhead of the tool is not prohibitive.
Respec: efficient online multiprocessor replayvia speculation and external determinism
Dongyoon Lee,Benjamin Wester,Kaushik Veeraraghavan,Satish Narayanasamy,Peter M. Chen,Jason Flinn +5 more
- 13 Mar 2010
TL;DR: It is shown that the combination of these two techniques results in low recording and replay overhead for the common case of data-race-free execution intervals and still ensures correct replay for execution intervals that have data races.
156
References
PROVIDE: a process visualization and debugging environment
TL;DR: The author introduces PROVIDE, a source-level process visualization and debugging environment currently under development at the University of Illinois at Chicago that emphasizes the use of interactive computer graphics for the illustration of program execution, with special attention to the requirements of program debugging.
120
A software instruction counter
John Mellor-Crummey,Thomas J. LeBlanc +1 more
- 01 Apr 1989
TL;DR: It is shown that an instruction counter can be reasonably implemented in software, often with less than 10% execution overhead, and will make program instrumentation much easier for the system developer.
Fast breakpoints: design and implementation
Peter B. Kessler
- 01 Jun 1990
TL;DR: It is shown that breakpoints can still be fast, even with multiple threads of control on multi-processors, and problems in the design of a breakpoint package for modern computer architectures and programming styles are described.
An integrated approach to parallel program debugging and performance analysis onlarge-scale multiprocessors
Robert J. Fowler,Thomas J. LeBlanc,John Mellor-Crummey +2 more
- 01 Nov 1988
TL;DR: A dynamic, fine-grain characterization of parallel program executions based on a partial order of accesses to shared objects forms the basis for an extensible, integrated toolkit for parallel program debugging and performance analysis.
69
Reversible execution
TL;DR: The ability to backtrack, or retrace, the execution of a computer program has gained wider acceptance recently as a desired feature within a programming language.
63