This paper introduces the bisection debugging model. The key idea is to use a debugger to identify the semantic differences between two versions of the same program. The debugger leads the user (programmer) to the region of the source code that is different between the versions and effects erroneous behavior. To implement bisection debugging; a debugger must insert checkpoints around regions of the program that are determined to be different (by; e.g.; a file differencing program). To compare the state of both computations; it is necessary that there are no constraints on where a breakpoint can be set; and the debugger must be able to solve all data value problems at this breakpoint. The quality of the file differencing program has an influence on the execution speed of the debugged program; but not on the correctness of the method. This debugging model is useful if there exists already a correct version of a program (in the sense that its output is acceptable) and subsequent changes have modified this program so that the output is no longer correct.