如果我使用调试器,大多数时候我只想看看解释器在我的代码中做了什么。我想跳过我使用的框架和库的所有代码。
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/
答案 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),但很容易改变它。