Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如果代码中存在eventlet.monkey\u patch(),则无法进行远程调试?_Python_Pycharm_Pydev_Eventlet_Openstack Neutron - Fatal编程技术网

Python 如果代码中存在eventlet.monkey\u patch(),则无法进行远程调试?

Python 如果代码中存在eventlet.monkey\u patch(),则无法进行远程调试?,python,pycharm,pydev,eventlet,openstack-neutron,Python,Pycharm,Pydev,Eventlet,Openstack Neutron,我正在尝试在python代码上使用PyCharm+Pydevd进行远程调试 我尝试远程调试的代码如下: #!/usr/bin/python import eventlet eventlet.monkey_patch() def main(): import pydevd pydevd.settrace('10.84.101.215', port=11111, stdoutToServer=True, stderrToServer=True) print "Done"

我正在尝试在python代码上使用PyCharm+Pydevd进行远程调试

我尝试远程调试的代码如下:

#!/usr/bin/python
import eventlet
eventlet.monkey_patch()

def main():
    import pydevd
    pydevd.settrace('10.84.101.215', port=11111, stdoutToServer=True, stderrToServer=True)
    print "Done"

if __name__ == '__main__':
    main()
请注意,如果我评论这行

eventlet.monkey_patch()
远程调试将正常工作。如果我把线路改成

eventlet.monkey_patch(os=False, thread=False)
远程调试也可以工作

但我不能这样做,因为这会破坏其他一些逻辑。(我正在尝试远程调试openstack中子。上面的代码只是描述我问题的示例)

我也做了一些事情后,谷歌这个问题,我会把他们粘贴在这里,虽然他们没有解决我的问题

1. In PyCharm do below setting

setting -> Build,Extension,Deployment -> Python Debug -> Gevent Compatible (Check)

2. In PyCharm do below change

Edit the file 
C:\Program Files (x86)\JetBrains\PyCharm 2016.1.4\helpers\pydev_pydevd_bundle\pydevd_constants.py

Replace SUPPORT_GEVENT=False to SUPPORT_GEVENT=True

我知道这是PyCharm问题或Pydevd问题。我已经在PyCharm社区发布了这篇文章,还没有得到回复。所以我想我可以试试这里。如果你知道的话,请给我一些建议

无法帮助Pydevd,但Eventlet中有交互式解释器后门,允许您连接并执行任何代码来分析系统状态

eventlet.monkey_patch()
# add one line
eventlet.spawn(backdoor.backdoor_server, eventlet.listen(('localhost', 3000)))
连接您喜爱的telnet客户端

另外,
导入ipdb;ipdb.set_trace()
一直为我带来奇迹。

使用eventlet.monkey_patch()使我无法在ipdb控制台中键入内容,你是如何解决的?