Debugging optimized code with dynamic deoptimization
Debugging optimized code with dynamic deoptimization
复制标题
DOI:
10.1145/143095.143114
复制
发表时间:
1992-07
期刊:
影响因子:
--
通讯作者:
Urs Hölzle;C. Chambers;D. Ungar
中科院分区:
文献类型:
--
作者:
Urs Hölzle;C. Chambers;D. Ungar
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.