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

Dan*_*Dan 10 python django debugging pycharm

想想这个场景:

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

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

Pio*_*ost 8

有谁知道如何防止调试器输入外部代码?

是的,Dmitry Trofimov 知道 ;

(...)添加你不想跟踪到dict的模块DONT_TRACE.<pycharm-distr>/helpers/pydev/pydevd.py
这是一个hacky解决方案(...)

如果你希望这个功能不那么hacky你可以通过访问问题PY-9101对它进行投票
实现Python调试器的"不要进入类"选项


使用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()


Mat*_*att 1

对于调试器来说,一切看起来都一样,它无法区分你的代码或 Django 的代码 \xe2\x80\x93 它都是 Python。所以它会运行所有的东西,但是如果你想阻止它向下钻取那么低,你必须开始 \xe2\x80\x9cstepping over\xe2\x80\x9d 行代码而不是 \xe2\x80\x9cstepping into \xe2\x80\x9d 他们。

\n\n

根据PyCharm 文档,F8当您看到一行代码看起来可能是进入 Django 内部的网关时,您就会想要使用它。如果你不小心发现自己进入了 Django 的源代码,你可以一直点击Shift+F8直到退出。

\n

  • 谢谢大家的回答!事实上,Shift+F8 是我到目前为止所使用的,我只是觉得它很乏味而且浪费时间。虽然偶尔我会看Django的代码,但大多数时候我都是看我的项目。也许这将成为 PyCharm 未来版本的一个功能。 (2认同)
  • *它无法区分您的代码或 Django 的代码* 通过设置断点,您可以告诉调试器在哪里停止。为什么你认为没有办法告诉调试器在哪里不要停止?请参阅问题[如何配置 Qt Creator 和/或 gdb,以便在使用 Qt 库调试我的程序时,调试器将避免单步进入 Qt 的源文件?](http://stackoverflow.com/q/1448426/95735)表明`gdb`中有这样的机制。如果一个调试器具有此功能,其他调试器也可能具有它。 (2认同)