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"