支持黑盒子的Python调试器?

时间:2014-12-11 08:35:46

标签: python debugging ipdb

如果我使用调试器,大多数时候我只想看看解释器在我的代码中做了什么。我想跳过我使用的框架和库的所有代码。

AFAIK这称为黑拳击

如何使用Python ipdb或其他Python调试器执行此操作?

想象一下:

我使用了一个我信任的orm框架,并且不想调试。

cut_hair_method(orm_object.user)

方法cut_hair_method()是我的,我想调试它。

orm_object来自我使用的框架。调试器将进入orm-code并做一些我不在乎的特殊事情。我没办法告诉调试器:不要跳进orm代码!

更新

对于我的情况,很容易确定哪个代码应该在黑匣子中,哪个代码不在:$VIRTUAL_ENV/src/中的代码不在黑框中,所有其他代码都是。除非我明确告诉调试器别的东西。

UPDATE2

我的名字是" Black Boxing"来自这篇文章:https://hacks.mozilla.org/2013/08/new-features-of-firefox-developer-tools-episode-25/

2 个答案:

答案 0 :(得分:4)

Python调试器基类(bdb.Bdb)具有.skip属性,提供要跳过的模块名称列表。您可以在实例化调试器或更高版本时提供此列表。如果您想提供一个否定列表(您自己的模块列表),或者计算是否应该跳过模块,您可以继承调试器类并覆盖is_skipped_module。

答案 1 :(得分:0)

自PyCharm版本4.5以来,有一个名为&#34的功能;进入我的代码":https://www.jetbrains.com/pycharm/whatsnew/#StepIntoCode

有效。我的情况,我只是想进入我的代码(Django应用程序),而不是django本身的代码。默认的快捷方式很复杂(alt-shift-F7),但很容易改变它。

相关问题:https://youtrack.jetbrains.com/issue/PY-14789