170 likes | 211 Views
This presentation by Steve Lewis delves into reversible debugging and state history recording techniques to support efficient debugging. Explore related work and future prospects, including J.I.M.S. demonstration and history logging methods.
E N D
TECHNIQUES FOR EFFICIENTLY RECORDING STATE CHANGES OF A COMPUTER ENVIRONMENT TO SUPPORT REVERSIBLE DEBUGGING Steve Lewis
Outline of Presentation • Introduction to Reversible Debugging • Related Work • State History Recording Techniques • Future Work • J.I.M.S. Demonstration
Introduction • What is reversible debugging? • Reverse Execution • Undo • Why is it useful? • Learning tool • Reduce debugging time • Parallel Programs
Related Work • EXDAMS (Balzer) • Flowback Analysis, History Tape • IGOR (Fieldman, Brown) • Incremental Checkpoints, Modified Memory Pages • SPYDER (Agrawal, DeMillo, Spafford) • Execution-History Backtracking vs. Structured Backtracking • LEONARDO (Demetrescu, Finocchi) • Reversible virtual CPU, virtual O/S, history recording • Bidirectional Debugging (Bob Boothe) • Event counters which facilitate re-execution
History Logging Techniques • Data Representation of State Changes • Checkpoint Creation • When to Create Checkpoints • Checkpoint Culling Algorithm
Data Representation of State Changes • Checkpoints record the entire state of the machine at some time index t. • State change recordsrecord incremental changes to the state of the machine.
When to Create Checkpoints • Compromise between… • Space conserved by using checkpoints • Distance between checkpoints
When to Create Checkpoints • If (StateHistorySize >= K * CheckpointSize) • Then createCheckpoint() • Requires estimating size of next checkpoint • Perform every cycle? • What is a good value for K? • Larger values of K… • Decrease the growth rate of state history • Increase the distance between checkpoints
Checkpoint Culling Algorithm • Motivation • Maintain the condition that the time to go backwards u steps is proportional to u. • Reduce state history growth rate from a linear function to a logarithmic function.
Future Work • Merging checkpoints • Save space by storing checkpoint deltas and still be able to use the Checkpoint Culling Algorithm • Investigate alternative methods for deciding when to create checkpoints • Implement circular state history record buffer • Necessary to maintain O(u) runtime for undo operation • More work on JIMS • More authentic simulation (e.g. memory mapped I/O) • Improved GUI (threads, exceptions) • Case study • To find patterns regarding the use of undo.