The invention provides an improved method and method for locating the
origin of runtime defect in software programs. A differential debugging
technique may be implemented to locate the diversion point where two
programs start to behave differently. In one approach, the method
generally involves running the two programs and generating respective
control flow diagrams via a static code analyzer or the like. Tracer and
supervisor modules may be used to replace addresses in registers with
symbols and/or position-independent offsets, and to locate where
differences in the register states occur.