Debugger

MINERVA provides a simple debugging tool to allow you to step through your program and watch it working.

It also allows you to execte your program until a specified breakpoint condition.

Preparation

To compile a program for later execution with or without the debugger invoke minervac with the "-debug" option:

	minervac -debug	myNewProg

You can combine objects compiled with the -debug option with already existing program components.

Invokation

To invoke the degugger on a program you use the command line minervad:

	minervad myNewProg

To invoke the debugger on a goal you use the predicate debug/1:

	someGoal(Args,..) :-
		subGoal1(A),
		subGoal2(B),
		   :
		debug(subGoal(K)),	% debugger will show this
		   :
		subGoalN(Z).

Breakpoints

To request execution to stop at a given condition you use breakpoints. Breakpoints can express conditions on program status and data.

	start :-
        	breakpoint(app/3),
        	breakif((app(A,B,C) :- C = [c])),
        	debug(app([1,2], [ b,c], L)).

app([],L,L). app([E|L1],L2,[E|L3]) :- app(L1,L2,L3).

Interactive Control

To interactively control operation of the debugger you use:

	s)tep        single pass
	n)ext        pass over
	f)ail        force 'fail'
	c)ont        continue till next breakpoint
	b)acktrace   show stack backtrace (activation stack)
	a)bort       abort
	e)scape      call 'break/0'
	h)elp        show this help message


Darueber read on...