2016-03-07 3 views
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) 

Почему это?

+1

Использование 'ipdb' вместо для многострочного поддержки – wim

ответ

5

Вы можете определить функцию в одной строке заявления с использованием ; вместо отступа, как это:

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

Я не думаю, что он поддерживает многострочный ввод. Вы можете обходным путем путем создания интерактивного сеанса из 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 
Смежные вопросы