Function: trace_options (<f>, <option_1>, ..., <option_n>)
Function: trace_options (<f>) Sets the trace options for function <f>. Any previous options are superseded.
trace_options (<f>, ...) has no effect unless
trace (<f>) is also called (either before or after
trace_options (<f>) resets all options to their default values.
The option keywords are:
noprint Do not print a message at function entry and exit.
break Put a breakpoint before the function is entered, and after the function is exited. See
lisp_print Display arguments and return values as Lisp objects.
-> true at function entry and exit.
errorcatch Catch errors, giving the option to signal an error, retry the function call, or specify a return value.
Trace options are specified in two forms. The presence of the option keyword alone puts the option into effect unconditionally. (Note that option <foo> is not put into effect by specifying
<foo>: true or a similar form; note also that keywords need not be quoted.) Specifying the option keyword with a predicate function makes the option conditional on the predicate.
The argument list to the predicate function is always
[level, direction, function, item] where
level is the recursion level for the function,
direction is either
function is the name of the function, and
item is the argument list (on entering) or the return value (on exiting).
Here is an example of unconditional trace options:
(%i1) ff(n) := if equal(n, 0) then 1 else n * ff(n - 1)$
(%i2) trace (ff)$
(%i3) trace_options (ff, lisp_print, break)$
Here is the same function, with the
break option conditional on a predicate:
(%i5) trace_options (ff, break(pp))$
(%i6) pp (level, direction, function, item) := block (print (item), return (function = ff and level = 3 and direction = exit))$
(%o1) true (%i2)