Continuable Break Loops

AutoCAD AutoLISP & Visual LISP

 
Continuable Break Loops
 
 
 

There are continuable and noncontinuable break loops in VLISP. You can enter the continuable break loop at the very first break in program execution by any of the following methods:

  • Turning on the Stop Once mode and reaching an expression with debugging information (that is, an expression that is loaded from source code, as opposed to from a compiled .exe file)
  • Reaching a function marked for Debug on Entry
  • Reaching a breakpoint you set in the program
  • Entering a break loop by pressing the Pause button
  • Proceeding with a Step Over, Step Into, or Step Out command from the previous break loop state

When the program is interrupted, you enter the break loop. This is apparent if the VLISP Console window is active, because the prompt is changed to reflect the current level of the break loop. In this suspended state, you have read-write access to all variables in the environment in which the break occurred. For example, if the break occurred within a function containing several local variable declarations, those variables are accessible and you can change their values by issuing setq assignments at the Console prompt.

When stopped at a breakpoint, you can control subsequent program execution by choosing one of the following items from the Debug menu, or by pressing the equivalent toolbar button:

  • Reset to Top Level terminates all currently active break loops and returns to the Console top-level (the top read-eval-print loop).

  • Quit Current Level terminates the current break loop and returns to a break loop one level up. This may be another break loop or the top-level read-eval-print loop.

  • Continue resumes normal program execution from the breakpoint.

The Step commands evaluate portions of program code before resuming suspended mode:

  • Step Over looks for the close parenthesis matching the open parenthesis where the program is currently paused, and evaluates the expressions in between.

  • Step Into jumps into a nested expression, if any. If there are no nested expressions, it jumps to the next expression in sequence.

  • Step Out searches for the end of the function where the program is currently paused, and evaluates all the expressions up to that point.

After you exit the break loop to the Console top-level, the Console prompt returns to its original form (without a number prefix).