支持黑盒的 Python 调试器



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

AFAIK 这被称为黑拳

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

想象一下:

我使用我信任的orm框架,不想调试。

cut_hair_method(orm_object.user)

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

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

更新

就我而言,很容易决定哪些代码应该在黑匣子里,哪些代码不应该在黑匣子里:$VIRTUAL_ENV/src/中的代码不在黑匣子里,所有其他代码都在黑匣子里。除非我明确告诉调试器其他事情。

更新2

我从这篇文章中得到了"黑拳"这个名字:https://hacks.mozilla.org/2013/08/new-features-of-firefox-developer-tools-episode-25/

Python 调试器基类 (bdb.Bdb( 有一个 .skip 属性,给出要跳过的模块名称列表。可以在实例化调试器时或稍后提供此列表。如果要提供否定列表(您自己的模块列表(,或以其他方式计算是否应跳过模块,则可以对调试器类进行子类化并重写is_skipped_module。

从 PyCharm 版本 4.5 开始,有一个名为"步入我的代码"的功能: https://www.jetbrains.com/pycharm/whatsnew/#StepIntoCode

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

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

相关内容

  • 没有找到相关文章

最新更新