break (original) (raw)

ANSI Common Lisp 9 Conditions 9.2 Dictionary of Conditions

Syntax:

break &optional format-control &rest format-arguments nil

Arguments and Values:

format-control - a format control. The default is implementation-dependent.

format-arguments - format arguments for the format-control.

Description:

break formats format-control and _format-arguments_and then goes directly into the debugger without allowing any possibility of interception by programmed error-handling facilities.

If the continue restart is used while in the debugger,break immediately returns nil without taking any unusual recovery action.

break binds *debugger-hook* to nilbefore attempting to enter the debugger.

Examples:

(break "You got here with arguments: ~:S." '(FOO 37 A)) BREAK: You got here with these arguments: FOO, 37, A. To continue, type :CONTINUE followed by an option number: 1: Return from BREAK. 2: Top level. Debug> :CONTINUE 1 Return from BREAK. NIL

Side Effects:

The debugger is entered.

Affected By:

*debug-io*.

See Also:

error, invoke-debugger.

Notes:

break is used as a way of inserting temporary debugging "breakpoints" in a program, not as a way of signaling errors. For this reason, break does not take the continue-format-control argument that cerror takes. This and the lack of any possibility of interception by_condition_ handling are the only program-visible differences between break and cerror.

The user interface aspects of break and cerror are permitted to vary more widely, in order to accomodate the interface needs of the implementation. For example, it is permissible for a_Lisp read-eval-print loop_ to be entered by break rather than the conventional debugger.

break could be defined by:

(defun break (&optional (format-control "Break") &rest format-arguments) (with-simple-restart (continue "Return from BREAK.") (let ((debugger-hook nil)) (invoke-debugger (make-condition 'simple-condition :format-control format-control :format-arguments format-arguments)))) nil)

Allegro CL Implementation Details:

None.