Dynamic currency determination in optimized programs
- 1 November 1998
- journal article
- Published by Association for Computing Machinery (ACM) in ACM Transactions on Programming Languages and Systems
- Vol. 20 (6) , 1111-1130
- https://doi.org/10.1145/295656.295657
Abstract
Compiler optimizations pose many problems to source-level debugging of an optimized program due to reordering, insertion, and deletion of code. On such problem is to determine whether the value of a varible 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 bit-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.Keywords
This publication has 13 references indexed in Scilit:
- Source-level debugging of scalar optimized codeACM SIGPLAN Notices, 1996
- Source-level debugging of scalar optimized codePublished by Association for Computing Machinery (ACM) ,1996
- Poor man's watchpointsACM SIGPLAN Notices, 1995
- A generalized theory of bit vector data flow analysisACM Transactions on Programming Languages and Systems, 1994
- Debugging optimized code without being misledACM Transactions on Programming Languages and Systems, 1994
- Debugging with dynamic slicing and backtrackingSoftware: Practice and Experience, 1993
- Detection and recovery of endangered variables caused by instruction schedulingACM SIGPLAN Notices, 1993
- Evicted variables and the interaction of global register allocation and symbolic debuggingPublished by Association for Computing Machinery (ACM) ,1993
- How to analyze large programs efficiently and informativelyACM SIGPLAN Notices, 1992
- Symbolic Debugging of Optimized CodeACM Transactions on Programming Languages and Systems, 1982