当前位置:  开发笔记 > Android > 正文

在pycharm或eclipse + pydev中的C线程中不工作python断点

如何解决《在pycharm或eclipse+pydev中的C线程中不工作python断点》经验,为你挑选了1个好方法。

我有一个使用C++库的django应用程序(通过swig导入).C++库启动自己的线程,该线程在Python代码中调用回调.

我无法在python代码中设置断点,在PyDev和PyCharm中也是如此.也试过'gevent compatibility'选项也没有运气.

我验证了回调被正确调用,因为logging.info转储了预期的内容.在其他线程中设置的断点工作正常.因此,似乎python调试器无法管理在非python代码中创建的线程调用的python代码中的断点.

有没有人知道解决方法?也许我可以使用一些"魔术"线程初始化序列?



1> Fabio Zadroz..:

你必须设置调试器机制才能在非python线程上工作(这是在创建Python线程时自动完成的,但是当你创建一个Python没有任何创建钩子的线程时,你必须这样做自己) - 请注意,对于某些框架 - 例如QThread/Gevent - 事情是猴子修补的,以便我们了解初始化并启动调试器,但对于其他框架,您必须自己完成.

要做到这一点,在启动线程后你必须调用:

import pydevd
pydevd.settrace(suspend=False, trace_only_current_thread=True)

请注意,如果您已经放置suspend=True,它将模拟手动断点并在代码的该点停止.

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有