HyperLink   New Data-Location Tracking Scheme for the Recovery of Expected Variable Values
Publication Year:
  Le-Chun Wu, Wen-mei Hwu
  IMPACT Technical Report, IMPACT-98-07, University of Illinois, Urbana, IL 1998

The run-time location of a user variable may be altered by optimizations such as register allocation. The variable value may be in di erent places (constant, register, or memory) at di erent points of execution. Or it may not exist at all due to code deletion and register (and memory location) reuse. To allow the user to access the value of a variable, the debugger has to know what location holds the value of the variable at breakpoints.

Coutant et al. [1] proposed a data structure called range to communicate to the debugger the location information of variables in di erent ranges of the binary program. A variable has a set of range records which are calculated based on the live ranges of the variable at compile-time. For example, in Figure 1(a), there are three live ranges for variable a in the sample program.

The range records for variable a is shown in Figure 1(b). By comparing the address of an object code location with the Low Address and High Address of each range record, the debugger can decide where to get the variable value at this object code location. If the address is not in any one of the range records, which means the variable value is not available at this point, the debugger has to inform the user of this fact.