Title
Debugging optimized code with dynamic deoptimization
Abstract
SELF's debugging system provides complete source-level debugging (expected behavior) with globally optimized code. It shields the debugger from optimizations performed by the compiler by dynamically deoptimizing code on demand. Deoptimization only affects the procedure activations that are actively being debugged; all other code runs at full speed. Deoptimization requires the compiler to supply debugging information at discrete interrupt points; the compiler can still perform extensive optimizations between interrupt points without affecting debuggability. At the same time, the inability to interrupt between interrupt points is invisible to the user. Our debugging system also handles programming changes during debugging. Again, the system provides expected behavior: it is possible to change a running program and immediately observe the effects of the change. Dynamic deoptimization transforms old compiled code (which may contain inlined copies of the old version of the changed procedure) into new versions reflecting the current source-level state. To the best of our knowledge, SELF is the first practical system providing full expected behavior with globally optimized code.
Year
DOI
Venue
1992
10.1145/143095.143114
PLDI
Keywords
Field
DocType
global optimization
Interrupt,Dead code elimination,Programming language,Code on demand,Debugger,Computer science,Compiler,Real-time computing,Compiled language,Operating system,Debugging,Algorithmic program debugging
Conference
Volume
Issue
ISSN
27
7
0362-1340
ISBN
Citations 
PageRank 
0-89791-475-9
137
9.85
References 
Authors
8
3
Search Limit
100137
Name
Order
Citations
PageRank
Urs Hölzle13492346.29
Craig Chambers23161351.45
David Ungar31530328.37