Python 36(Eclipse Oxygen,PyDev)在到达断点时崩溃

时间:2018-05-08 10:05:07

标签: eclipse python-3.6 pydev null-pointer

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.

1 个答案:

答案 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