我想在 set.update() 函数上设置断点,但是当我尝试时,我收到一条错误消息。
例子:
ss= set()
ss.update('a')
Run Code Online (Sandbox Code Playgroud)
断点:
b set.update
b ss.update
Run Code Online (Sandbox Code Playgroud)
错误:
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.
Run Code Online (Sandbox Code Playgroud)
(注意,我还尝试在末尾加上括号,例如b set.update(),但仍然收到错误。我没有打印所有错误的排列。)
谢谢!使用 @avasal 的答案和Doug Hellmann 的 pdb 网页,我想出了这个:
由于我试图捕获 set.update,我必须编辑 set.py 文件,但这还不够,因为 python 使用内置 set 类而不是我编辑的类。所以我重写了内置的 Sets 类:
import sets
locals()['__builtins__'].set=sets.Set
Run Code Online (Sandbox Code Playgroud)
然后我可以在调试器中设置条件断点:
b set.update, iterable=='a' #successful
b set.update, iterable=='b' #won't stop for ss.update('a')
Run Code Online (Sandbox Code Playgroud)
我的整个示例文件如下所示:
import pdb
import sets
locals()['__builtins__'].set=sets.Set
pdb.set_trace()
ss = set()
ss.update('a')
print "goodbye cruel world"
Run Code Online (Sandbox Code Playgroud)
然后在调试器提示符下输入:
b set.update, iterable=='a'
Run Code Online (Sandbox Code Playgroud)
希望这也对其他人有帮助。
| 归档时间: |
|
| 查看次数: |
3094 次 |
| 最近记录: |