Skip to content Skip to sidebar Skip to footer

How To Define A New Function In Pdb

Why can't I define new functions when I run pdb? For example take myscript.py: #!/gpfs0/export/opt/anaconda-2.3.0/bin/python print 'Hello World' print 'I see you' If I run python

Solution 1:

I don't think it supports multi-line input. You can workaround by spawning up an interactive session from within pdb. Once you are done in the interactive session, exit it with Ctrl+D.

>>> import pdb
>>> pdb.set_trace()
(Pdb) !import code; code.interact(local=vars())
(InteractiveConsole)
In : deffoo():
...:     print('hello in pdb')
...: 
In : # use ctrl+d here to return to pdb shell...
(Pdb) foo()
hello in pdb

Solution 2:

You can define your function in a one line statement using ; instead of indentation, like this:

(Pdb) deffoo(): print'Hello world'; print'I see you'
(Pdb) foo()
Hello world
I see you

Solution 3:

i was able to import python modules from the pdb command line.

if you can import python modules, then you should be able to define your functions in a file and just do an import of the file.

Solution 4:

If your application happens to have IPython as a dependency, you could drop yourself into a feature-rich IPython REPL right from ipdb:

import IPython; IPython.embed()

From inside, if you run IPython's magic command whos, you should see all the locally defined variables in the current pdb frame.

Post a Comment for "How To Define A New Function In Pdb"