使用pycharm进行调试,如何进入项目,而无需进入django库

时间:2013-03-01 18:35:55

标签: python django debugging pycharm

想想这个场景:

我调试我的Django项目,然后逐步完成代码(进出)。调试器有时会进入Django库或其他外部库。

有谁知道如何阻止调试器输入外部代码?或者至少是一个“大”的步骤,让调试器回到项目代码?

2 个答案:

答案 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直到你离开它。