问题
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 -m pdb myscript.py
and try to interactively define a new function:
def foo():
I get the error:
*** SyntaxError: unexpected EOF while parsing (<stdin>, line 1)
Why is this?
回答1:
You can define your function in a one line statement using ;
instead of indentation, like this:
(Pdb) def foo(): print 'Hello world'; print 'I see you'
(Pdb) foo()
Hello world
I see you
回答2:
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 : def foo():
...: print 'hello in pdb'
...:
In : # use ctrl+d here to return to pdb shell...
(Pdb) foo()
hello in pdb
回答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.
来源:https://stackoverflow.com/questions/35852170/how-to-define-a-new-function-in-pdb