如果我使用调试器,大多数时候我只是想看看解释器在我的代码中做了什么。我想跨过我使用的框架和库的所有代码。
据我所知,这称为黑拳。
如何使用 Python ipdb 或其他 Python 调试器执行此操作?
想象一下:
我使用我信任的 orm 框架,并且不想调试。
cut_hair_method(orm_object.user)
cut_hair_method()
方法是我的,我想调试它。
orm_object
来 self 使用的框架。调试器将进入 orm 代码并做一些我不关心的特殊事情。我没有办法告诉调试器:不要跳入orm代码!
更新
对于我的情况,很容易决定哪些代码应该在黑盒子里,哪些代码不应该在黑盒子里: $VIRTUAL_ENV/src/
中的代码不在黑盒子里,所有其他代码是。除了我明确告诉调试器其他事情。
更新2
我从这篇文章中得到了“Black Boxing”这个名字:https://hacks.mozilla.org/2013/08/new-features-of-firefox-developer-tools-episode-25/
最佳答案
Python 调试器基类 (bdb.Bdb) 有一个 .skip 属性,提供要跳过的模块名称列表。您可以在实例化调试器时或稍后提供此列表。如果你想提供一个否定列表(你自己的模块列表),或者计算是否应该跳过一个模块,你可以子类化调试器类并覆盖 is_skipped_module。
关于支持 Black Boxing 的 Python 调试器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27418473/