我想在set.update()函数上设置一个断点,但是当我尝试时,我收到一条错误信息。
示例:
ss= set()
ss.update('a')
断点:
b set.update
b ss.update
错误:
The specified object 'ss.update' is not a function
or was not found along sys.path.
The specified object 'set.update' is not a function
or was not found along sys.path.
(注意,我也尝试使用末尾的括号,例如b set.update()
,但仍然出错。我没有打印所有错误的排列。)
答案 0 :(得分:2)
谢谢!使用@ avasal的答案和Doug Hellmann's pdb webpage,我想出了这个:
由于我试图捕获set.update,我不得不编辑sets.py文件,但这还不够,因为python使用的是内置集类而不是我编辑的类。所以我覆盖了内置集类:
import sets
locals()['__builtins__'].set=sets.Set
然后我可以在调试器中设置条件断点:
b set.update, iterable=='a' #successful
b set.update, iterable=='b' #won't stop for ss.update('a')
我的整个示例文件如下所示:
import pdb
import sets
locals()['__builtins__'].set=sets.Set
pdb.set_trace()
ss = set()
ss.update('a')
print "goodbye cruel world"
然后在调试器提示符下输入:
b set.update, iterable=='a'
希望这也有助于其他人。