In this paper we develop a generic declarative diagnoser for normal logic programs that is based on tree search. The soundness and the completeness of the diagnoser are proved. The diagnoser is generic in that it can be used with di erent search strategies such as the bottomup, top-down, top-down zooming and divide-and-query strategies in the literature. The user can specialise the diagnoser by choosing their own search strategy. The diagnoser also has a smaller search space than diagnosers reported in the literature. This is achieved by using the acquired part of the intended interpretation of the program to prune the search space before it is searched.