170 likes | 245 Views
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.
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.