![]()
Maintained by web@cs.rutgers.edu |
Rutgers University Computer Science Colloquium Date: August 3, 2001 Time: 11:30 AM Location: CoRE Building, Rm. 229, Busch Campus Title: Debugging of Optimized Code D.M. Dhamdhere, Indian Institute of Technology, Bombay Host: Barbara G. Ryder Abstract: Insertion, deletion and reordering of code performed during optimization disturbs mappings between source statements and object code and makes debugger functionality difficult in many ways. A primary source of these difficulties is the `noncurrency' of a variable, whereby the actual value in the variable may differ from the value a programmer expects it to contain. Noncurrency arises when assignments to program variables are moved during optimization and when dead assignments are eliminated. It is wrong for a debugger to use or report the actual value of a variable which is not current; it should "recover" the expected value of a variable before using or reporting it. Similar issues arise in exception handling. Recovery of noncurrent variables is performed using an "execution history" of a program, which is analogous to a program trace in many ways. We use the theory of bit vector data flow analysis to develop a compact execution history for currency analysis. We then develop an effective execution history for recovery of noncurrent variables using the notion of "criticality" of a node. |