Debugging Optimized Code: Concepts and Implementation on DIGITAL Alpha Systems

Effective user debugging of optimized code has been a topic of theoretical and practical interest in the software development community for almost two decades, yet today the state of the art is still highly uneven. We present a brief survey of the literature and current practice that leads to the identification of three aspects of debugging optimized code that seem to be critical as well as tractable without extraordinary efforts. These aspects are (1) split lifetime support for variables whose allocation varies within a program combined with definition point reporting for currency determination, (2) stepping and setting breakpoints based on a semantic event characterization of program behavior, and (3) treatment of inlined routine calls in a manner that makes inlining largely transparent. We describe the realization of these capabilities as part of Compaq’s GEM back-end compiler technology and the debugging component of the OpenVMS Alpha operating system.

[1]  Peter Hermann Feiler,et al.  A language-oriented interactive programming environment based on compilation technology , 1982 .

[2]  John L. Hennessy,et al.  Symbolic Debugging of Optimized Code , 1982, TOPL.

[3]  Steven O. Hobbs,et al.  The GEM Optimizing Compiler System , 1992, Digit. Tech. J..

[4]  Polle Zellweger Lnteractiv~ source-level debugging of optimized programs , 1984 .

[5]  Ali-Reza Adl-Tabatabai,et al.  Source-level debugging of globally optimized code , 1996 .

[6]  Steve Simmons,et al.  A new approach to debugging optimized code , 1992, PLDI '92.

[7]  Mary Lou Soffa,et al.  Debugging optimized code via tailoring , 1994, ISSTA '94.

[8]  Deborah S. Coutant,et al.  DOC: a practical approach to source-level debugging of globally optimized code , 1988, PLDI '88.

[9]  Craig Chambers,et al.  Debugging optimized code with dynamic deoptimization , 1992, PLDI '92.

[10]  Lawrence Walter Zurawski Interactive source-level debugging of globally optimized code with expected behavior , 1990 .

[11]  L.L. Pollock,et al.  High-level debugging with the aid of an incremental optimizer , 1988, [1988] Proceedings of the Twenty-First Annual Hawaii International Conference on System Sciences. Volume II: Software track.

[12]  Bert Beander VAX DEBUG: an interactive, symbolic, multilingual debugger , 1983, SIGSOFT '83.

[13]  Robert Sims,et al.  Alpha architecture reference manual , 1992 .

[14]  Tim Bingham,et al.  Experiences developing and using an object-oriented library for program manipulation , 1993, OOPSLA '93.

[15]  Max Copperman Debugging optimized code without being misled , 1994, TOPL.