2012-07-15 123 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