With an increasing number of executable binaries generated by optimizing co
mpilers today, providing a clear and correct source-level debugger for prog
rammers to debug optimized code has become a necessity. In this paper, a ne
w framework for debugging globally optimized code is proposed. This framewo
rk consists of a new code location mapping scheme, a data location tracking
scheme, and an emulation-based forward recovery model. By taking over the
control early and emulating instructions selectively, the debugger can pres
erve and gather the required program state for the recovery of expected var
iable values at source breakpoints. The framework has been prototyped in th
e IMPACT compiler and GDB-4.16. Preliminary experiments conducted on severa
l SPEC95 integer programs have yielded encouraging results. The extra time
needed for the debugger to calculate the limits of the emulated region and
to emulate instructions is hardly noticeable, while the increase in executa
ble file size due to the extra debug information is on average 76% of that
of the executable file with no debug information.