Share
 
 

Stack Element List Reference (Visual LISP IDE)

A stack element is an individual record or line-item history within a trace stack.

Note: The Visual LISP IDE is available on Windows only.

There are five kinds of elements that may appear within a stack:

  • Function call frames show one individual function invocation. They are displayed in the following format:
    level (function-name {argument1} ...)

    Arguments within this listing are displayed not by their local parameter name, but by the values that were actually passed to the function.

  • Keyword frames are displayed at the very top and bottom of a trace stack. They are displayed in the following format:
    level :keyword - {optional-data}

    The keyword indicates the type of the frame. The optional-data displays additional information relating to the state of the program.

  • Top forms indicate an action that was initiated by typing an expression at the top-level Console window, or from the invocation of a function that was triggered during the loading of a file or selection within a Visual LISP text editor window.
  • Lambda forms are placed within a stack whenever a lambda function is encountered within a program.
  • Special forms display the invocation of the foreach and repeat functions. The arguments for these functions are not displayed. They are displayed in the following format:
    level (function-form ...)

As an example, load the following code in Visual LISP, set a breakpoint as indicated in the code comments, and then start the TRACE-10-DEEP command.

(defun stack-tracing (indexVal maxVal)
   (princ "At the top of the stack-tracing function, indexVal = ")
   (princ indexVal)
   (if (< indexVal maxVal)
      (stack-tracing (1+ indexVal) maxVal)
      (princ "Reached the maximum depth.") ; place a breakpoint
                                          ; at the beginning of
                                          ; this line
   )
)

(defun c:trace-10-deep ()
   (terpri)
   (stack-tracing 1 10)
)

The Trace Stack window from the previous sample code looks like the following illustration when program execution is interrupted at the set breakpoint.

Was this information helpful?