Psaní kódu je jako psaní detektivky. Někdy se v příběhu objeví díra a vy musíte zjistit, kde se stala chyba. Tomuto procesu se říká ladění (debugging). V Prologu je to obzvlášť důležité, protože jeho "myšlení" (backtracking) může být někdy matoucí.
trace je jako nasadit na Prolog sledovací zařízení. Uvidíte každý jeho krok, každé rozhodnutí. Je to nejdůkladnější, ale také nejukecanější nástroj.
trace. a stiskněte Enter.?- rodic(homer, X).).Když vidíte otazník ?, můžete zadat příkaz:
s ho provede celé najednou bez zdržování.Pro vypnutí napište notrace. nebo nodebug.
Někdy je trace příliš detailní. Chcete jen vědět, jestli se program dostal do určitého bodu a jakou hodnotu má proměnná. K tomu slouží starý dobrý write.
moje_pravidlo(X, Y) :-
write('Vstupuji do pravidla s X = '), write(X), nl,
... nějaká logika ...
write('Opouštím pravidlo s Y = '), write(Y), nl.
Je to jako volat kamarádovi z různých míst v bludišti a říkat mu, kde právě jste.
Programátoři často kombinují obě techniky:
vypocet/2."?- vypocet(5, X).write příkazů, abyste viděli hodnoty proměnných v klíčových bodech.trace a sledujete každý krok.Pokud používáte SWI-Prolog na Windows nebo Linuxu, můžete zkusit příkaz gtrace. Místo textu se otevře okno, kde vidíte kód a aktuální pozici barevně zvýrazněnou. Je to mnohem přehlednější než textový trace.