Next: Heuristic Program Checker
Up: Development Support Tools
Previous: Development Support Tools
  Index
ECLiPSe provides a number of different tools and libraries to assist
the programmer with program development:
- Document
- Tools for generating documentation from ECLiPSe
sources.
- Lint
- Generates warning messages for dubious programming
constructs and violation of naming conventions for an ECLiPSe source
module or file.
- Pretty_printer
- Tools for pretty-printing a file in
different formats.
- Xref
- Enables the analysis of an ECLiPSe source module or
file for the construction of a predicate call graph.
In addition, ECLiPSe provides several tools that aid in the
understanding of a programs runtime behaviour:
- Coverage
- Records the frequency at which various parts of the
program are executed.
- Debugger
- Provides a low level view of program
activity. Chapter 14 presents a comprehensive
look at debugging of ECLiPSe programs.
- Display matrix
- Shows the values of given terms in a graphical
window. Chapter 4 discusses the use of this tool.
- Mode Analyser
- Collects statistics about the invocation modes of
predicates within a running program in order to assist in the generation of
compiler invocation mode directives.
- Port Profiler
- Collects statistics about the running program in terms
of box model port counters.
- Timing Profiler
- Samples the running program at regular intervals to
give a statistical summary of where the execution time is spent.
- Visualisation framework
- A graphical environment for the
visualisation of search and propagation in constraint programs.
The Visualisation Tools Manual discusses the use of this
environment.
This section focuses on the program development libraries and two
complementary runtime analysis tools, the profiler and the
coverage library.
Throughout this chapter, the use of each of the tools is demonstrated
on the following n-queens code:
:- module(queen).
:- export queen/2.
queen(Data, Out) :-
qperm(Data, Out),
safe(Out).
qperm([], []).
qperm([X|Y], [U|V]) :-
qdelete(U, X, Y, Z),
qperm(Z, V).
qdelete(A, A, L, L).
qdelete(X, A, [H|T], [A|R]) :-
qdelete(X, H, T, R).
safe([]).
safe([N|L]) :-
nodiag(L, N, 1),
safe(L).
nodiag([], _, _).
nodiag([N|L], B, D) :-
D =\= N - B,
D =\= B - N,
D1 is D + 1,
nodiag(L, B, D1).
Next: Heuristic Program Checker
Up: Development Support Tools
Previous: Development Support Tools
  Index
Warwick Harvey
2004-08-07