How do I skip a loop with pdb?

PythonDebuggingPdb

Python Problem Overview


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.

Python Solutions


Solution 1 - Python

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 - Python

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 - Python

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 - Python

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!')

Solution 5 - Python

If I understood this correctly.

One possible way of doing this would be:

Once you get you pdb prompt . Just hit n (next) 10 times to exit the loop.

However, I am not aware of a way to exit a loop in pdb.

You could use r to exit a function though.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionRhysView Question on Stackoverflow
Solution 1 - PythonshredddView Answer on Stackoverflow
Solution 2 - PythonmikeView Answer on Stackoverflow
Solution 3 - PythonZach ValentaView Answer on Stackoverflow
Solution 4 - PythonQaswedView Answer on Stackoverflow
Solution 5 - Pythonj_juggernautView Answer on Stackoverflow