2011-11-22 13 views
10

Użyłem b "classname: function" lub "b classname :: function", a te nie działały. teraz używam "b linenum" jako obejścia problemu.Ale jak często modyfikuję mój kod, zmiany pościeli.Tak jak zrobić punkt przerwania na funkcji członka klasy w python? I google to & & przeczytać instrukcję Pythona, i nie ma bezpośredniej odpowiedzi .dzięki!jak zrobić punkt przerwania na funkcji członka klasy python?

Odpowiedz

14

W pdb, debugger Python, punkt przerwania można ustawić

b classname.methodname 

po definicji klasy został przeanalizowany.


Na przykład

% pdb ~/pybin/test.py 

> /home/unutbu/pybin/test.py(4)<module>() 
-> class Foo(object): 
(Pdb) l 
    1  #!/usr/bin/env python 
    2  # coding: utf-8 
    3  
    4 -> class Foo(object): 
    5   def bar(self): pass 
    6  
    7  foo=Foo() 
    8  foo.bar() 
[EOF] 

Ustawianie przerwania przed parsowania klasę zawiedzie:

(Pdb) b Foo.bar 
*** The specified object 'Foo.bar' is not a function 
or was not found along sys.path. 

ale po parsowania Klasa:

(Pdb) n 
> /home/unutbu/pybin/test.py(7)<module>() 
-> foo=Foo() 
(Pdb) l 
    2  # coding: utf-8 
    3  
    4  class Foo(object): 
    5   def bar(self): pass 
    6  
    7 -> foo=Foo() 
    8  foo.bar() 
[EOF] 

ustawienie punktu przerwania robót :

(Pdb) b Foo.bar 
Breakpoint 1 at /home/unutbu/pybin/test.py:5 
(Pdb) 

(Pdb) r 
> /home/unutbu/pybin/test.py(5)bar() 
-> def bar(self): pass 
+0

dziękuje! Działa. Ustawienie tego rodzaju punktów przerwania po przeanalizowaniu klasy jest szczególnie ważne. – user1058909

3

przypadku uporczywego punkt przerwania na linii przed chcesz zerwać, można również użyć:

import pdb; pdb.set_trace() 

Zobacz python doc więcej szczegółów.

Powiązane problemy