2011-08-15 10 views

Odpowiedz

12

Masz pełną moc tłumacza w zasięgu ręki z pdb użyć

import pdb 
pdb.set_trace() 

Stamtąd można definiować i tworzyć nowe obiekty, przedefiniować istniejące te, modyfikuj i ładuj moduły itp. Składnia jest podobna do gdb. Jeśli korzystasz z ipython, lepszym wyborem może być ipdb lub możesz automatycznie wywołać debuggera za pomocą funkcji magii ipython %debug.

+0

Dobra odpowiedź, ale polecam używanie pdb przez IPython, co czyni go jeszcze potężniejszym (podświetlanie składni, automatyczne debugowanie przy wyjątkach itp.) (Http://ipython.org/ipython-doc/stable/interactive /tutorial.html#debugging). – EOL

1

Możesz podać nowe wartości imionom, ale wciąż mogą istnieć miejsca odnoszące się do starej wartości. Sprawdź sesji poniżej w powłoce Pythona:

>>> def foo(): print 'Foo' 
... 
>>> bar = foo 
>>> 
>>> foo() 
Foo 
>>> bar() 
Foo 
>>> 
>>> def foo(): print 'Bar' 
... 
>>> foo() 
Bar 
>>> bar() 
Foo 
>>> 
>>> def call(): foo() 
... 
>>> call() 
Bar 
>>> 
>>> 
>>> def foo(): print 'Foo reloaded!' 
... 
>>> 
>>> foo() 
Foo reloaded! 
>>> bar() 
Foo 
>>> 
>>> call() 
Foo reloaded! 
>>> 

Funkcja call odnosi się do nowego foo, ale bar została przypisana wartość starego foo i że nie zmienia się, kiedy ponownie użyć nazwy foo.

Czy prosiłeś o wsparcie redaktora? Python-mode in Emacs może uruchomić "gorszy proces python", do którego możesz wysyłać bloki kodu podczas grania z nimi. Lub możesz to zrobić bezpośrednio w powłoce Pythona, jak pokazano powyżej.

Powiązane problemy