MTS 8: LISP and SLIP in MTS
June 1976
(BREAKF FOO1 (FOO2 (GREATERP N 5) (ARGS)))
breaks all calls to FOO1 and all calls to FOO2 when N
is greater than 5 after first printing the arguments
of FOO2.
(BREAKF ((FOO4 IN FOO5) (MINUSP X) NIL))
breaks all calls to FOO4 made from FOO5 when X is
negative.
Examples:
(BREAKF FOO)
(BREAKF ((GET IN FOO) T (GO)))
TRACEF TRACEF is an FLAMBDA. For each atomic argument, it
TRACEFs the function named each time it is called.
For each list in the form (FN1 IN FN2), it TRACEFs
only those calls to FN1 that occur within FN2.
For example, (TRACEF FOO1 (SETQ IN FOO3) causes both
FOO1 and SETQ in FOO3 to be traced.
Note: The user can always call BREAKO himself to
obtain combinations of options of BREAKFUNCTION not
directly available with BREAKF and TRACEF (see section
on BREAKO below). These functions merely provide
convenient ways of calling BREAKO, and will serve for
most uses.
UNBREAK UNBREAK is an FLAMBDA. It takes a list of functions
modified by BREAKF or TRACEF and restores them to
their original state. Its value is NIL. (UNBREAK T)
will unbreak the function most recently broken.
(UNBREAK) will unbreak all of the functions currently
broken.
If one of the functions, say FN, is not broken,
UNBREAK prints "FN NOT BROKEN" for that function and
no changes are made to FN.
UNTRACEF UNTRACEF is an FLAMBDA. It is the similar to UNBREAK.
BREAK0 [fn when coms]
BREAK0 is an EXPR. It sets up a break on the function
"fn" by redefining "fn" as a call to BREAKFUNCTION
with BREAKEXPR a form equivalent to the definition of
"fn", and "when", "fn", and "coms" as BREAKWHEN,
BREAKFN, and BREAKCMDS, respectively (see BREAKFUNC-
108 LISP Debugging Facilities