4.2 The Tracer

4.2.2 Reading trace output

The following example shows the result of tracing a recursive function:

> (defun fact (n)
    (if (< n 1) 1 (* n (fact (1- n)))))
FACT

> (trace fact) (FACT)

> (fact 4) 1 Enter FACT 4 | 2 Enter FACT 3 | 3 Enter FACT 2 | | 4 Enter FACT 1 | | 5 Enter FACT 0 | | 5 Exit FACT 1 | | 4 Exit FACT 1 | 3 Exit FACT 2 | 2 Exit FACT 6 1 Exit FACT 24 24

The trace output contains the following information:

You can modify the trace output by suppressing entry or exit information with various keyword options totrace. See description of trace for more information.

You can change the indentation, the printing of vertical bars, and the number of columns in the trace output by using the following variables, which are extensions to Common Lisp:

*max-trace-indentation*
*trace-bar-p*
*trace-columns-per-level*

In addition, the variables*debug-print-length* and*debug-print-level* control the length and level of printing within the trace output. When the tracing information for a function is being printed, the variable*print-level* is bound to the value of the variable*debug-print-level*, and the variable*print-length* is bound to the value of the variable*debug-print-length*. You can change the printing level and length by binding each of the variables*debug-print-level* and*debug-print-length* to a fixnum integer greater than or equal to 1. See Chapter 3, "Debugging Lisp Programs" for more information.


The User's Guide - 9 SEP 1996

Generated with Harlequin WebMaker