如果使用调试器,大多数时候我只想看看解释器在代码中的作用。我想遍历我使用的框架和库的所有代码。

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/

10-12 18:20
查看更多