Python Ecplipse、PyDev、Django:settings.py中的断点有效,但视图中的断点无效
我已经在我的开发环境中开始了一个相当雄心勃勃的项目,因为我想我喜欢保持最新。因此,我多年来一直在使用Eclipse和PyDev进行Django项目,它工作得非常出色 我使用Python3.7、Django 2.1和Eclipse光子已经有一段时间了 我尝试了一种全新的开始,如下所示,移动到最新版本的所有内容:Python Ecplipse、PyDev、Django:settings.py中的断点有效,但视图中的断点无效,python,eclipse,debugging,pydev,breakpoints,Python,Eclipse,Debugging,Pydev,Breakpoints,我已经在我的开发环境中开始了一个相当雄心勃勃的项目,因为我想我喜欢保持最新。因此,我多年来一直在使用Eclipse和PyDev进行Django项目,它工作得非常出色 我使用Python3.7、Django 2.1和Eclipse光子已经有一段时间了 我尝试了一种全新的开始,如下所示,移动到最新版本的所有内容: 已安装最新的Eclipse(2019-12面向Web和JavaScript开发人员的Eclipse IDE(包括孵化组件) 向其中添加PyDev(帮助>安装新软件,从) 已安装Python
将项目复制到工作区
PyDev for Eclipse 7.4.0.201910251334 org.python.pydev.feature.feature.group Fabio Zadrozny
PyDev for Eclipse Developer Resources 7.4.0.201910251334 org.python.pydev.feature.source.feature.group Fabio Zadrozny
Pydev Mylyn Integration 0.6.0 org.python.pydev.mylyn.feature.feature.group Fabio Zadrozny
主要观察结果:
DEBUG: current trace function None
这似乎是问题所在。某些东西正在关闭调试
遵循Fabio的第一个技巧并考虑到自该技巧以来PyDev结构的变化,我在plugins/org.python.PyDev.core_7.4.0.20191025134/pysrc/_PyDev_bundle
中找到了PyDev_constants.py
,并在其中设置:
DEBUG_TRACE_LEVEL = 3
DEBUG_TRACE_BREAKPOINTS = 3
正如Fabio所建议的。这显示了一点遗憾。本质上,我在启动调试运行直到服务器运行时看到了很多很酷的跟踪。然后我看到标准输出,说服务器正在运行:
System check identified no issues (0 silenced).
December 26, 2019 - 12:29:54
Django version 3.0.1, using settings 'MyProject.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
它在settings.py中的断点处停止,我继续使用F8
现在在我的浏览器中,我加载了我正在调试的视图。控制台上没有PyDev跟踪,唉,事实上,我只得到了我在视图的get_queryset()方法中的一小行打印行,以确保我的代码(带断点)正在运行
因此,这没有任何帮助。我可以在我的views.py文件中,根据法比奥的建议,在干草堆中寻找一根针:
import sys
print('DEBUG: current trace function', sys.gettrace())
def trace_func(frame, event, arg):
with open('pydev-trace.txt', 'a') as f:
print('Context: ', frame.f_code.co_name, '\tFile:', frame.f_code.co_filename, '\tLine:', frame.f_lineno, '\tEvent:', event, file=f)
return trace_func
sys.settrace(trace_func)
print('DEBUG: current trace function', sys.gettrace())
在控制台上,我现在看到:
DEBUG: current trace function None
DEBUG: current trace function <function trace_func at 0x7ffaa6f18b80>
System check identified no issues (0 silenced).
December 26, 2019 - 12:42:48
Django version 3.0.1, using settings 'MyProject.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
这是我们迄今为止最好的线索。我怀疑这里有些东西处于一个非常紧密的无休止的循环中。网页仍然在加载,因此它不会以惊人的速度消耗资源,而且它运行了很长时间,不会溢出任何堆栈或任何东西,但显然似乎不知何故被破坏了
但是要在这里确定一些东西是非常困难的
最后,在回答中,法比奥建议暴力修复可能是:
import pydevd;
pydevd.settrace()
Alas无法导入pydevd,但如果我向外部库添加:
...plugins/org.python.pydev.core_7.4.0.201910251334/pysrc
我可以,然后运行它,但它会在我的控制台上产生无穷无尽的文本流,而我的网站在发生这种情况时不会响应。因此,这是一种蛮力,在调试服务器关闭的意义上;-)。这可能与上面无休止的循环有关
其他检查:
我查看了Fabios的需求列表:
在这些方面我很好
首选项>PyDev>调试>调试时自动附加到子流程
)import pydevd;
pydevd.settrace()
...plugins/org.python.pydev.core_7.4.0.201910251334/pysrc