In this thesis, a Prolog debugger which refines and modifies the notion of Shapiro's Algorithmic Program Debugging is proposed and implemented. To improve Shapiro's debugger, a wrong solution algorithm is modified to deal with Prolog programs with cut. It is also shown that the algorithm can resolve problems caused by the difference between the declarative semantics and the operational semantics of Prolog.
In addition, to debug errors resulted from the inconsistency of the mode and the type of variables, two new algorithms to detect the mode and type errors are developed.