D.M. Dhamdhere, K.V. Sankaranarayanan
Debugging of optimized programs.
ACM Transactions on Programming Languages & Systems, vol.20 (1998), 1111-1130.


Compiler optimizations pose many problems to source level debugging of an optimized program due to reordering, insertion and deletion of code. One such problem is to determine whether the value of a variable is current at a breakpoint---that is, whether its actual value is the same as its expected value. We use the notion of dynamic currency of a variable in source level debugging and propose the use of a minimal unrolled graph to reduce the run-time overhead of dynamic currency determination. We prove that the minimal unrolled graph is an adequate basis for performing bi-vector data flow analyses at a breakpoint. This property is used to perform dynamic currency determination. It is also shown to help in recovery of a dynamically noncurrent variable.