| Allegro CL version 8.2 Unrevised from 8.1 to 8.2. 8.1 version |
Arguments: &optional mode &rest mode-values
This command allows the user to add or delete breakpoints and to print out information about the breakpoints currently in use.
Called without arguments, this command prints information on what breakpoints are set, if any:
cl-user(131): :break No breakpoints set cl-user(132): :break open Adding #<Function open>: 0 0: 48 81 ec 88 01 subq rsp,$392 ; 49 00 00 cl-user(133): :break #<Function open>: asm: pc=0 not yet hit cl-user(134):
Called with arguments, :break sets breakpoints or otherwise manages them.
Whether or not a breakpoint is effective (that is stops code execution when reached) depends on whether it is installed or uninstalled. An installed breakpoint is one which will cause normal execution to stop and the debugger entered if an attempt is made to execute the instruction at that location. An uninstalled breakpoint will not cause such an interruption of execution. Deleted breakpoints are always uninstalled but otherwise whether breakpoints are or are not installed depends on (as we said just above) whether ldb debugging mode is on, see :ldb, or the code being evaluated is within the body of with-breakpoints-installed form.
The situation is further complicated by the fact that when a breakpoint is hit and stops execution, the debugging mode changes from ldb to ldb-step and breakpoints are then uninstalled. See The Lisp DeBug (ldb) stepper in debugging.htm for information on this point.
Again, :break called with arguments adds or deletes breakpoints from the current breakpoint set. Its arguments are
mode can be
:add
, to add breakpoints. mode-values in that case should be one
or more breakpoint specifications (described just below). Any number of breakpoint
specifications can be specified. If none are specified, the command is a no-op, i.e. does
nothing.:del
, to delete breakpoints. mode-values in that case should be
breakpoint specifications (described just below) for the breakpoints to be deleted (they
must have been previously added). Any number of breakpoint specifications can be
specified. If none are specified, the command is a no-op, i.e. does nothing.nil
, to delete all breakpoints.A breakpoint specification is made up of a particular pc (program counter, look at the output of disassemble) offset from the beginning of a particular function. A single breakpoint can be specified by
function-name [offset]
where offset defaults to 0. Multiple breakpoints can be specified by simply naming pairs:
foo 10 bar 20
When multiple breakpoints are specified, the offsets are not optional. However, multiple breakpoints within the same function can be specified by leaving out all but the first function name; thus
foo 10 20 30
is equivalent to specifying
foo 10 foo 20 foo 30
See The Lisp DeBug (ldb) stepper in debugging.htm for information on ldb stepping. See top-level.htm for more information on top-level commands.
Copyright (c) 1998-2016, Franz Inc. Oakland, CA., USA. All rights reserved.
This page was not revised from the 8.1 page.
Created 2010.1.21.
| Allegro CL version 8.2 Unrevised from 8.1 to 8.2. 8.1 version |