Я использовал b "classname: function" или "b classname:: function", и они не работали. теперь я использую "b linenum" как обходное решение. Но поскольку я часто меняю свой код, меняет linenum. Так как сделать точку останова на функции члена класса в python? Я google it && & & прочитайте руководство python, и нет прямого ответа. Спасибо!
Как сделать точку останова на функции члена класса python?
Ответ 1
В pdb
, отладчик Python, точка останова может быть установлена с помощью
b classname.methodname
после определения класса.
Например,
% 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]
Установка точки прерывания до разбора класса не выполняется:
(Pdb) b Foo.bar
*** The specified object 'Foo.bar' is not a function
or was not found along sys.path.
но после разбора класса:
(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]
настройка работы точки останова:
(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
Ответ 2
Для постоянной точки останова на линии перед тем, как вы хотите сломать, вы также можете использовать:
import pdb; pdb.set_trace()
Подробнее см. python doc.