Debugging 可以在PyDev脚本中设置断点吗?

Debugging 可以在PyDev脚本中设置断点吗?,debugging,jython,pydev,Debugging,Jython,Pydev,我想在中设置一个断点。我尝试了各种配置: (1) 在Eclipse编辑器中设置断点,但什么也没发生 (2和3)通过在脚本中添加以下代码强制跟踪: import template_helper if False: py_context_type = org.python.pydev.editor.templates.PyContextType def MyFunc(context): # option (2) - try pydevd with another eclipse

我想在中设置一个断点。我尝试了各种配置:

(1) 在Eclipse编辑器中设置断点,但什么也没发生

(2和3)通过在脚本中添加以下代码强制跟踪:

import template_helper

if False:
    py_context_type = org.python.pydev.editor.templates.PyContextType

def MyFunc(context):
    # option (2) - try pydevd with another eclipse session hosting debug server
    #import sys
    #sys.path.append(r"... pydev.core_6.3.3.201805051638\pysrc")
    #import pydevd; pydevd.settrace()

    # option (3) - try pdb
    import pdb; pdb.set_trace()
    return "some text"

template_helper.AddTemplateVariable(py_context_type, 'mysub', 'A desc', MyFunc)
正在尝试pydevd(选项2)时崩溃,错误日志中添加了一个异常,如下所示:

Caused by: Traceback (most recent call last):
  File "...\org.python.pydev.jython_6.3.3.201805051638\jysrc\template_helper.py", line 20, in resolveAll
    ret = self._callable(context)
  File "...\pydev_scripts\src\pytemplate_local.py", line 12, in MyFunc
    import pydevd; pydevd.settrace(stdoutToServer=True, stderrToServer=True)
  File "...\org.python.pydev.core_6.3.3.201805051638\pysrc\pydevd.py", line 1189, in settrace
    _locked_settrace(
  File "...\org.python.pydev.core_6.3.3.201805051638\pysrc\pydevd.py", line 1295, in _locked_settrace
    debugger.set_tracing_for_untraced_contexts(ignore_frame=get_frame(), overwrite_prev_trace=overwrite_prev_trace)
  File "...\org.python.pydev.core_6.3.3.201805051638\pysrc\pydevd.py", line 595, in set_tracing_for_untraced_contexts
    for frame in additional_info.iter_frames(t):
  File "...\org.python.pydev.core_6.3.3.201805051638\pysrc\_pydevd_bundle\pydevd_additional_thread_info_regular.py", line 117, in iter_frames
    current_frames = _current_frames()
  File "...\org.python.pydev.core_6.3.3.201805051638\pysrc\_pydevd_bundle\pydevd_additional_thread_info_regular.py", line 26, in _current_frames
    as_array = thread_states.entrySet().toArray()
AttributeError: 'java.lang.ThreadLocal' object has no attribute 'entrySet'
pdb(选项3)在PyDev脚本控制台中打印(pdb)提示符,但不能输入任何文本并进入交互模式,例如:

(Pdb) IOError: IOError(...nvalid',)
> ...\org.python.pydev.jython_6.3.3.201805051638\jysrc\template_helper.py(20)resolveAll()
-> ret = self._callable(context)
(Pdb) 

也许这是不可能的。有什么建议吗?

为了将来的参考,我最终能够通过下载调试脚本。然后我将这个jython安装到一个临时位置。在备份了与pydev捆绑的jython插件文件夹之后,我复制并粘贴了pydev jython安装程序上的相关目录以及pydevd包的副本。在设置了一个断点(如上面的选项(2)所述)之后,我能够在单独的Eclipse实例中逐步完成调试


感谢您在@FabioZadrozny评论中的帮助。

您使用的Jython版本是什么?@FabioZadrozny我使用的是与PyDev捆绑的版本,特别是插件文件夹“\.p2\pool\org.python.PyDev.Jython\u 6.3.3.201805051638”下的版本。运行
java-jar…\org.python.pydev.jython_6.3.3.201805051638\jython.jar-V
会得到“jython 2.7b2”。问题是pydev中内置的jython是一个较旧的版本(pydev本身不再支持调试它),因此,不幸的是,在PyDev的内部Jython版本更新之前,您一直在使用print语句进行调试。谢谢@FabioZadrozny。出于兴趣,我可以将jython.jar文件粘贴到plugins文件夹中,pydev插件会自动获取新的jython吗?或者可能有一个属性文件,可以指向它使用外部jython安装?我知道有一些。我认为粘贴可能有用(尽管我从来没有这样做过)。没有可使用外部jython安装的属性文件。无论如何,作为免责声明,我从来没有调试过内部jython,所以,我不确定我能在这方面帮你多少忙。