想想这个场景:
我调试了我的 Django 项目,并逐步完成了代码(进出)。调试器有时会进入 Django 库或其他外部库。
有谁知道如何防止调试器输入外部代码?或者至少是“大”一步让调试器回到项目代码?
有谁知道如何防止调试器输入外部代码?
是的,德米特里·特罗菲莫夫知道;
(...)添加您不想跟踪到 dict
DONT_TRACE
的模块,<pycharm-distr>/helpers/pydev/pydevd.py
这是一个 hacky 解决方案(...)
如果您希望此功能不那么 hacky,您可以通过访问 issue
PY-9101 为 Python 调试器实现“不要步入类”选项对其进行投票
那些使用 pdb 的人可能有兴趣知道 pdb 中有这样的功能;
从 Python 3.1 开始,Pdb
class 有一个新参数,称为skip
-
class pdb.Pdb(completekey='tab', stdin=None, stdout=None, skip=None, nosigint=False)
如果给定,skip 参数必须是 glob 样式的模块名称模式的可迭代。调试器不会单步执行源自与这些模式之一匹配的模块的帧。1
1帧是否被认为源自某个模块由
__name__
帧中的全局变量决定。
文档中给出的示例显示了如何跳过 Django 的包 -
import pdb; pdb.Pdb(skip=['django.*']).set_trace()
调试器看起来一切都一样,它无法区分您的代码或 Django 的代码——它都是 Python。所以它会运行一切,但是如果你想阻止它向下钻取这么低,你将不得不开始“跳过”代码行而不是“步入”它们。
根据PyCharm 文档F8
,当你看到一行代码看起来像是进入 Django 内部的入口时,你会想要使用它。如果你不小心发现自己在 Django 的源代码中,你可以Shift+F8
一直打到你离开它。