Python 36(在Windows 7上,在最新的Eclipse Oxygen下最新的带有Python 36的Anaconda)在到达断点时崩溃。错误是一个经典的' NULL指针错误。
Unhandled exception at 0x000000001D8CF76D (python36.dll) in python.exe: 0xC0000005: Access violation reading location 0xFFFFFFFFFFFFFFFF.
堆栈跟踪的(顶部)如下所示:
> python36.dll!PyType_IsSubtype(_typeobject * a, _typeobject * b) Line 1358 C
sip.pyd!000007fec602092d() Unknown
sip.pyd!000007fec6020897() Unknown
QtGui.pyd!000007fec6649d02() Unknown
python36.dll!_PyImport_LoadDynamicModuleWithSpec(_object * spec, _iobuf *) Line 160 C
python36.dll!_imp_create_dynamic_impl(_object * spec, _object * file, _object *) Line 1984 C
python36.dll!_imp_create_dynamic(_object * module, _object * args) Line 289 C
python36.dll!_PyEval_EvalFrameDefault(_frame * f, int throwflag) Line 3391 C
pydevd_frame_evaluator.cp36-win_amd64.pyd!000007fed57869ac() Unknown
python36.dll!_PyEval_EvalCodeWithName(_object * _co, _object * globals, _object * locals, _object * * args, __int64 argcount, _object * * kwnames, _object * * kwargs, __int64 kwcount, int kwstep, _object * * defs, __int64 defcount, _object * kwdefs, _object * closure, _object * name, _object * qualname) Line 4153 C
python36.dll!call_function(_object * * * pp_stack, __int64 oparg, _object * kwnames) Line 4845 C
不确定它是否相关,但我的代码是Django 2.x应用程序。 知道发生了什么事吗? (我刚从Python2移植了这段代码)
我可以告诉PyDev 不使用预编译代码(pyd)吗?
更新
设置env变量没有帮助;我尝试在Eclipse中定义它,在Python定义和Debug配置中。
令人惊讶地删除(真正重命名).pyd
也没有效果。
我试图重新安装PyDev并且不这次构建调试器加速(假设这是.pyd的创建方式),但错误仍然存在。
warning: Debugger speedups using cython not found. Run '"C:\Anaconda3\python.exe" "C:\eclipse-jee-oxygen\configuration\org.eclipse.osgi\364\data\779679999\plugins\org.python.pydev.core_6.3.3.201805051638\pysrc\setup_cython.py" build_ext --inplace' to build.
答案 0 :(得分:0)
不确定为什么它会在那里打破,无论如何,一个简单的解决方法,直到解决这个问题是删除pydev调试器中的相关.pyd(即:只需删除调试器所在的_pydevd_frame_eval
文件夹中的* .pyd找到 - 在这种情况下,实际的.pyd文件是:pydevd_frame_evaluator.cp36-win_amd64.pyd
)。
那是eclipse/plugins/org.python.pydev.core_XXX/pysrc/_pydevd_frame_eval
。
另一个选择是将名为PYDEVD_USE_FRAME_EVAL
的环境变量设置为NO
。