支持 Black Boxing 的 Python 调试器?

标签 python debugging ipdb

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

据我所知,这称为黑拳

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

想象一下:

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

cut_hair_method(orm_object.user)

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

orm_object 来 self 使用的框架。调试器将进入 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。

关于支持 Black Boxing 的 Python 调试器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27418473/

相关文章:

linux - 如何获取gdb调用堆栈跟踪?

ios - 尝试使用 NSTimer 并在运行我的应用程序时发现一个奇怪的错误

django 3 - 导入 ipdb; ipdb.set_trace() - 运行时错误

Python:如何捕获子进程中接收到的 UNIX 信号?

python - 如何从 Python 运行 Excel VBA/宏

c# - C#WinForms-OpenFileDialog MultiSelect : “Index was outside the bounds of the array.” 上的错误

python - 如何退出 ipdb 调试器?

python - ipython Notebook调试出现bug时如何更正数值后继续运行?

python - 如何在 Gurobi Python 中将决策变量与矩阵相乘

python - cssutils parseString 媒体查询失败。 - 错误 CSSStyleDeclaration : Unexpected token