Speaker: Ali-Reza Adl-Tabatabai
Symbolic Debugging of Globally Optimized Code
Date: November 11, 1993
Abstract: Designing a symbolic debugger for globally optimized code is considered difficult and implementors have generally avoided supporting the debugging of optimized code in the past. A symbolic debugger must solve two types of problems: First, the debugger must be able to both map a source statement to an instruction in the object code to set a breakpoint and map an instruction to the source code to report a fault or user interrupt. Problems relating to these control flow mappings are called code location problems. Second, the debugger must be able to retrieve and display the values of source variables in a manner consistent with what the user expects with respect to the source statement where execution has halted. Problems relating to retrieving source values are called data value problems. When a program has been compiled with optimizations, mappings between breakpoints in the source and object code become complicated, and values of variables may either be inaccessible in the run-time state or inconsistent with what the user expects.
In this talk, we discuss the code location and data value problems caused by optimizations. We then present a solution to the data value problem caused by global scalar optimizations.