How to define a new function in pdb

核能气质少年 提交于 2019-11-30 14:52:24

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!