2012-07-15 89 views
18

我一直在玩Gevent,我很喜欢它。但是我遇到了一个问题。断点没有被击中,调试不起作用(同时使用Visual Studio Python工具和Eclipse PyDev)。这发生在调用monkey.patch_all()之后。gevent猴子补丁和断点

这对我来说是一个很大的问题,不幸的是这是使用gevent的拦截器。我发现一个few threads似乎表明gevent打破了调试,但我会想象有一个解决方案。

有谁知道如何使调试和断点与gevent和monkey patching一起工作吗?

+0

那么,为什么没有像我们在80年代使用“印刷品”呢?虽然这不完全是你在寻找它可能有助于修复一个或两个错误。 – Moonwalker 2012-08-04 18:10:25

回答

3

pdb - The Python Debugger

import pdb 
pdb.set_trace() # Place this where you want to drop into the python interpreter. 
+0

工程就像一个魅力。 – kkurian 2012-10-19 04:30:23

8

PyCharm IDE解决了这个问题。在设置配置标志后,它支持gevent代码调试:http://blog.jetbrains.com/pycharm/2012/08/gevent-debug-support/

不幸的是,目前我不知道一个能够调试gevent的免费工具。

UPD:有!现在有一个社区版本的PyCharm。

+1

因为即使一年左右这些线程仍然有用... Jetbrains现在提供免费的“社区”版本的Pycharm - http://www.jetbrains.com/pycharm/download/index.html – 2013-11-01 15:59:04

0

我目前使用Pycharm 2.7.3,我也在使用gevent 0.13.8打破调试的问题。但是,当我更新到gevent 1.0rc3我发现我可以再次正确调试。


旁注:

我现在才了解到,Jetbrains的曾与配置国旗的解决方法。当我需要使用以下hack进行调试时,我正在解决这个问题。我真的不知道它为什么起作用,也不知道它会带来什么负面影响。我只是做了一些试验和错误,这发生在使用grequests时允许调试工作。

# overrides the monkeypatch issue which causes debugging in PyDev to not work. 
def patch_time(): 
    return 
import gevent.monkey 
gevent.monkey.patch_time = patch_time 
import grequests