Step (step into)

step [ + | - | < | > | ! ] [event…] [count]

Execute the current line, stopping at the next event.

With an integer argument, step that many times.

event is list of an event name which is one of: call, return, line, exception, c-call, c-return, or c-exception.

If specified, only those stepping events will be considered. If no list of event names is given, then any event triggers a stop when the count is zero.

There is however another way to specify an event: you can suffix one of the symbols <, >, or ! after the command or on an alias of that. A suffix of + on a command or an alias forces a move to another line, while a suffix of - disables this requirement. A suffix of > will continue until the next call. finish will run run until the return for that call, in contrast to step< continues to the return of any call which might occur inside a nested call.

If no suffix is given, the debugger setting different-line determines this behavior.

An example. Use step> to skip over a number of statements to get a call that is coming up:

(trepan3k) list
29             # Make: a <= b
30             if a > b:
31                (a, b) = (b, a)
32                pass
33
34 -->         if a <= 0:
35                 return None
36             if a == 1 or b-a == 0:
37                 return a
38             return gcd(b-a, a)

If we know that a >=1 and b != 0, then by running step> we will skip over all of the testing and proceed into the gcd() call:

(trepan3k) step>
(/tmp/python3-trepan/test/example/gcd.py:26): gcd
-> 26 def gcd(a,b):
a = 3
b = 3
(trepan3k)

Now if we want to continue execution to the return, run step<:

(trepan3k) step<
step<
(/tmp/python3-trepan/test/example/gcd.py:37 @62): gcd
<- 37         return a
R=> 3

Note that finish does the same thing as step< and might even be more reliable here.

For step>, break is sometimes better.

Step Examples:

step        # step 1 event, *any* event
step 1      # same as above
step 5/5+0  # same as above
step line   # step only line events
step call   # step only call events
step>       # same as above
step call line # Step line *and* call events

See also

next command. skip, jump (there’s no hop yet), continue, and finish provide other ways to progress execution.