Previous: Breakpoints, Up: Session Support


7.5.5 Tracing

(require 'trace) This feature provides three ways to monitor procedure invocations:

stack
Pushes the procedure-name when the procedure is called; pops when it returns.
track
Pushes the procedure-name and arguments when the procedure is called; pops when it returns.
trace
Pushes the procedure-name and prints ‘CALL procedure-name arg1 ...’ when the procdure is called; pops and prints ‘RETN procedure-name value’ when the procedure returns.
— Variable: debug:max-count

If a traced procedure calls itself or untraced procedures which call it, stack, track, and trace will limit the number of stack pushes to debug:max-count.

— Function: print-call-stack
— Function: print-call-stack port

Prints the call-stack to port or the current-error-port.

— Macro: trace proc1 ...

Traces the top-level named procedures given as arguments.

— Macro: trace

With no arguments, makes sure that all the currently traced identifiers are traced (even if those identifiers have been redefined) and returns a list of the traced identifiers.

— Macro: track proc1 ...

Traces the top-level named procedures given as arguments.

— Macro: track

With no arguments, makes sure that all the currently tracked identifiers are tracked (even if those identifiers have been redefined) and returns a list of the tracked identifiers.

— Macro: stack proc1 ...

Traces the top-level named procedures given as arguments.

— Macro: stack

With no arguments, makes sure that all the currently stacked identifiers are stacked (even if those identifiers have been redefined) and returns a list of the stacked identifiers.

— Macro: untrace proc1 ...

Turns tracing, tracking, and off for its arguments.

— Macro: untrace

With no arguments, untraces all currently traced identifiers and returns a list of these formerly traced identifiers.

— Macro: untrack proc1 ...

Turns tracing, tracking, and off for its arguments.

— Macro: untrack

With no arguments, untracks all currently tracked identifiers and returns a list of these formerly tracked identifiers.

— Macro: unstack proc1 ...

Turns tracing, stacking, and off for its arguments.

— Macro: unstack

With no arguments, unstacks all currently stacked identifiers and returns a list of these formerly stacked identifiers.

These are procedures for tracing. If defmacros are not natively supported by your implementation, these might be more convenient to use.

— Function: tracef proc
— Function: tracef proc name
— Function: trackf proc
— Function: trackf proc name
— Function: stackf proc
— Function: stackf proc name

To trace, type

          (set! symbol (tracef symbol))

or

          (set! symbol (tracef symbol 'symbol))

or

          (define symbol (tracef function))

or

          (define symbol (tracef function 'symbol))
— Function: untracef proc

Removes tracing, tracking, or stacking for proc. To untrace, type

          (set! symbol (untracef symbol))