How do I skip a loop with pdb?

35,867

Solution 1

Try the until statement.

Go to the last line of the loop (with next or n) and then use until or unt. This will take you to the next line, right after the loop.

http://www.doughellmann.com/PyMOTW/pdb/ has a good explanation

Solution 2

You should set a breakpoint after the loop ("break main.py:4" presuming the above lines are in a file called main.py) and then continue ("c").

Solution 3

In the link mentioned by the accepted answer (https://pymotw.com/3/pdb/), I found this section somewhat more helpful:

To let execution run until a specific line, pass the line number to the until command.

Here's an example of how that can work re: loops:

enter image description here

enter image description here

enter image description here

It spares you from two things: having to create extra breakpoints, and having to navigate to the end of a loop (especially when you might have already iterated such that you wouldn't be able to without re-running the debugger).

Here's the Python docs on until. Btw I'm using pdb++ as a drop-in for the standard debugger (hence the formatting) but until works the same in both.

Solution 4

You can set another breakpoint after the loop and jump to it (when debugging) with c:

pdb.set_trace()
for i in range(5):
    print(i)

pdb.set_trace()
print('Done!')
Share:
35,867
Rhys
Author by

Rhys

Updated on December 14, 2021

Comments

  • Rhys
    Rhys over 2 years

    How can I skip over a loop using pdb.set_trace()?

    For example,

    pdb.set_trace()
    for i in range(5):
         print(i)
    
    print('Done!')
    

    pdb prompts before the loop. I input a command. All 1-5 values are returned and then I'd like to be prompted with pdb again before the print('Done!') executes.