  The programming language Prolog makes declarative programming possible, at
least to a substantial extent. Programs may be written and reasoned about in
terms of their declarative semantics. All the advantages of declarative
programming are however lost when it comes to program debugging. This is
because the Prolog debugger is based solely on the operational semantics.
Declarative methods of diagnosis (i.e. locating errors in programs) exist, but
are neglected. This paper discusses their possibly main weaknesses and shows
how to overcome them. We argue that useful ways of declarative diagnosis of
logic programs exist, and should be usable in actual programming.
