:step

If not in ldb mode (ldb does not appear in the prompt), this command
initiates or affects stepping, as we now describe. See below for
behavior in ldb mode.

The :step top-level command
implements the functionality of the step macro.

With an argument of t, stepping is enabled
globally, otherwise the arguments are assumed to be symbols naming
functions wherein stepping should occur. Any non-functions supplied to
:step will be flagged as invalid
arguments, but an error will not be signaled.

Called with no arguments or nil as an
argument while not stepping, stepping is disabled. Use the command
:sover to get out of stepping in
order to turn stepping off. :step
and :step nil have no effect while stepping is going
on. It is only useful to step through compiled code. When you try to
step through interpreted code, you end up stepping through the
interpreter itself, with most output irrelevant to understanding your
own code.

When in ldb-step mode, the step command recognizes several
sub-commands as its first argument:

Subcommand

Action

:step over

Stepping is continued, once per command issue, through the code, following
branches but not following function calls into deeper level functions.

:step into

Just like :step over except that if a call point is
encountered, the new function is breakpointed at or near pc=0. A primcall (a call to a
runtime system function) is never stepped into.

:step this

No actual stepping is done, but the current instruction is re-printed in
disassembled form.

:step return

The currently-debugged function continues to its end, and the caller of
the function is breakpointed just after the call.

:step cont

Continues through the current instruction even if there is a breakpoint in
it.

:step type

Prints information on what kind of stepping is being remembered for the
<return> key. :none is printed until the first occurrence of either a :step over or
:step into is done. See The Lisp DeBug (ldb) stepper
in debugging.htm.

To use :step in ldb mode, you must be at a breakpoint. Thus:

cl-user(1): :ldb t
[ldb] cl-user(2): :step into
You must be stopped at a breakpoint before ldb-stepping can begin.
[ldb] cl-user(3):