想想这个场景:
我调试我的Django项目,然后逐步完成代码(进出)。调试器有时会进入Django库或其他外部库。
有谁知道如何阻止调试器输入外部代码?或者至少是一个“大”的步骤,让调试器回到项目代码?
答案 0 :(得分:8)
有谁知道如何阻止调试器输入外部代码?
是的,德米特里·特罗菲莫夫knows;
(...)将您不想跟踪的模块添加到
DONT_TRACE
中的词典<pycharm-distr>/helpers/pydev/pydevd.py
中 这是一个hacky解决方案(...)
如果您希望此功能不那么黑,您可以通过访问问题进行投票 PY-9101 Implement "Do not step into the classes" option for Python debugger
那些使用pdb的人可能有兴趣知道pdb中有这样的功能;
从Python 3.1开始,Pdb
类有一个名为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()
答案 1 :(得分:1)
调试器的一切看起来都一样,它无法区分你的代码或Django的代码 - 它都是Python。因此它会运行所有内容,但是如果你想阻止它向下钻取那么低,你将不得不开始“踩过”代码行而不是“踩到”它们。
根据PyCharm docs你想要使用F8
时,你会看到一行代码,看起来它可能是进入Django内部的网关。如果你意外地发现自己在Django的源代码中,你可以点击Shift+F8
直到你离开它。