如果使用调试器,大多数时候我只想看看解释器在代码中的作用。我想遍历我使用的框架和库的所有代码。
AFAIK,这被称为黑拳。
如何使用Python ipdb或其他Python调试器执行此操作?
想象一下:
我使用一个我信任的orm框架,并且不想调试。
cut_hair_method(orm_object.user)
方法
cut_hair_method()
是我的,我想调试它。orm_object
来自我使用的框架。调试器将进入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。
关于支持黑匣子的Python调试器?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27418473/