2016-03-07 7 views
7

Warum kann ich nicht neue Funktionen definieren, wenn ich pdb ausführen?Wie definiert man eine neue Funktion in pdb

Zum Beispiel nehmen myscript.py:

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

Wenn ich python -m pdb myscript.py und versuchen, führen Sie eine neue Funktion interaktiv zu definieren:

def foo(): 

ich den Fehler:

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

Warum ist das?

+1

Verwenden 'ipdb' stattdessen für mehrzeilige Unterstützung – wim

Antwort

5

Sie können Ihre Funktion in einer einer Zeile Anweisung ; statt Einbuchtung, wie folgt definieren:

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

Ich glaube nicht, dass es mehrzeilige Eingabe unterstützt. Sie können Abhilfe schaffen, indem Sie eine interaktive Sitzung von pdb aus starten. Wenn Sie in der interaktiven Sitzung fertig sind, beenden Sie sie mit Strg + 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