Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python-pdb skip code (as in "not execute")

Is there a way to skip a line or two altogether in pdb?

Say I have a pdb session:

> print 10   import pdb; pdb.set_trace()   destroy_the_universe() # side effect   useful_line() 

And I want to go straight to useful_line() WITHOUT invoking pdb() once again, or destroying the universe. Is there a way to skip (i.e. not execute code) what is between

print 10 and useful_line()?

like image 740
paroxyzm Avatar asked Jan 02 '15 11:01

paroxyzm


People also ask

How do I skip pdb?

Whenever you want to leave the pdb console, type the command quit or exit . If you would like to explicitly restart a program at any place within the program, you can do so with the command run .

How do you skip a loop in pdb?

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

What is pdb Set_trace ()?

pdb. set_trace (*, header=None) Enter the debugger at the calling stack frame. This is useful to hard-code a breakpoint at a given point in a program, even if the code is not otherwise being debugged (e.g. when an assertion fails). If given, header is printed to the console just before debugging begins.


1 Answers

Use the j/jump command:

test.py contains:

def destroy_the_universe():     raise RuntimeError("Armageddon")  def useful_line():     print("Kittens-r-us")  print(10) import pdb; pdb.set_trace() destroy_the_universe() useful_line() 

Then:

C:\Temp>c:\python34\python test.py 10 > c:\temp\test.py(9)<module>() -> destroy_the_universe() (Pdb) l   4     def useful_line():   5         print("Kittens-r-us")   6   7     print(10)   8     import pdb; pdb.set_trace()   9  -> destroy_the_universe()  10     useful_line() [EOF] (Pdb) j 10 > c:\temp\test.py(10)<module>() -> useful_line() (Pdb) c Kittens-r-us 
like image 112
Duncan Avatar answered Sep 23 '22 14:09

Duncan