如何在pdb中定义一个新函数

时间:2016-03-07 19:21:43

标签: python python-2.7 pdb

为什么我在运行pdb时无法定义新功能?

例如,参考myscript.py:

#!/gpfs0/export/opt/anaconda-2.3.0/bin/python
print "Hello World"
print "I see you"

如果我运行python -m pdb myscript.py并尝试以交互方式定义新功能:

def foo():

我收到错误:

*** SyntaxError: unexpected EOF while parsing (<stdin>, line 1)

为什么会这样?

3 个答案:

答案 0 :(得分:14)

我认为它不支持多行输入。您可以通过在pdb中生成交互式会话来解决此问题。完成交互式会话后,使用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

答案 1 :(得分:6)

您可以使用;而不是缩进在单行语句中定义函数,如下所示:

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

答案 2 :(得分:0)

我能够从pdb命令行导入python模块。

如果你可以导入python模块,那么你应该能够在文件中定义你的函数,只需要导入文件。