10

想想这个场景:

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

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

4

2 回答 2

8

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

是的,德米特里·特罗菲莫夫知道

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

如果您希望此功能不那么 hacky,您可以通过访问 issue
PY-9101 为 Python 调试器实现“不要步入类”选项对其进行投票


那些使用 pdb 的人可能有兴趣知道 pdb 中有这样的功能;

从 Python 3.1 开始,Pdbclass 有一个新参数,称为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()

于 2013-03-03T13:36:49.247 回答
1

调试器看起来一切都一样,它无法区分您的代码或 Django 的代码——它都是 Python。所以它会运行一切,但是如果你想阻止它向下钻取这么低,你将不得不开始“跳过”代码行而不是“步入”它们。

根据PyCharm 文档F8,当你看到一行代码看起来像是进入 Django 内部的入口时,你会想要使用它。如果你不小心发现自己在 Django 的源代码中,你可以Shift+F8一直打到你离开它。

于 2013-03-01T20:13:10.947 回答