pydev断点不起作用

pydev断点不起作用,第1张

pydev断点不起作用

似乎真的很奇怪…我需要更多信息以更好地诊断问题:

打开 plugins org.python.pydev.debug pysrc pydevd_constants.py并进行更改

DEBUG_TRACE_LEVEL = 3 DEBUG_TRACE_BREAKPOINTS = 3

运行问题的用例并将输出添加到问题中…

同样,由于某种原因,可能会在您使用的某些库或代码中重置调试工具,因此,请执行以下 *** 作:在放置断点的位置执行以下 *** 作:

import sysprint 'current trace function', sys.gettrace()

(注:在调试器中运行时,它会被预期的跟踪功能,有几分像:

<bound method PyDB.trace_dispatch of<__main__.PyDB instance at 0x01D44878>>

另外,请发布您正在使用的Python版本。


回答第二部分:

sys.gettrace()返回None的事实可能是真正的问题…我知道一些与之混淆的外部库(例如:DecoratorTools-
阅读:http : //pydev.blogspot.com/2007/06/why -cant-pydev-debugger-work-
with.html),甚至还看到Python错误和已编译的扩展程序将其破坏…

尽管如此,它中断的最常见原因可能是因为 当递归引发堆栈溢出错误 (即:RuntimeError:超过最大递归深度 )时,
Python 将默默 禁用跟踪(并因此禁用调试器 )。

您可能会在程序的开头放置一个断点,并进入调试器,直到它停止工作。

或更简单的方法如下:将以下代码添加到程序的开头,然后查看打印过程的进展情况…最后打印的是代码破裂前的代码(因此,您可以在其中放置一个断点最后一行打印出来,知道它应该是工作的最后一行)-请注意,如果它是一个大型程序,则打印可能会花费很长时间-
甚至可以更快地打印到文件而不是控制台(例如例如cmd,bash或eclipse),然后再打开该文件(只需将打印内容从示例重定向到文件即可)。

import sysdef trace_func(frame, event, arg):    print 'Context: ', frame.f_pre.co_name, 'tFile:', frame.f_pre.co_filename, 'tLine:', frame.f_lineno, 'tEvent:', event    return trace_funcsys.settrace(trace_func)

如果仍然无法解决,请在获得的结果上发布更多信息…

注意:一种解决方法,直到您找不到实际的位置为止:

import pydevd;pydevd.settrace()

在放置断点的地方-这样,您将在代码中肯定有一个断点,因为它会强制在该点设置跟踪工具(这与远程调试非常相似:http:
//pydev.org/manual_adv_remote_debugger.html,不同之处在于,由于先前已经连接了调试器,因此您实际上不必启动远程调试器,只需执行settrace来模拟断点)



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5644953.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存