2012-07-15 9 views
18

Ho giocato con Gevent, e mi piace molto. Tuttavia ho incontrato un problema. I punti di interruzione non vengono colpiti e il debug non funziona (utilizzando sia Visual Studio Python Tools che Eclipse PyDev). Questo succede dopo che è stato chiamato monkey.patch_all().gevent patch-patching e punti di interruzione

Questo è un grosso problema per me, e sfortunatamente questo è un blocco per l'uso di gevent. Ho trovato un few threads che sembra indicare che gevent interrompe il debug, ma immagino che ci sia una soluzione per questo.

Qualcuno sa come eseguire il debug e i punti di interruzione con gevent e patch delle scimmie?

+0

Bene, perché non utilizzare "stampa" come siamo nell'ottantesimo? Anche se questo non esattamente quello che stai cercando potrebbe aiutare a correggere un bug o due. – Moonwalker

risposta

3

pdb - The Python Debugger

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

Funziona come un fascino. – kkurian

8

PyCharm IDE risolve il problema. Supporta il debug del codice gevent dopo aver impostato un flag di configurazione: http://blog.jetbrains.com/pycharm/2012/08/gevent-debug-support/.

Purtroppo, al momento non conosco uno strumento gratuito in grado di eseguire il debug di gevent.

UPD: CI SONO! Ora c'è una versione comunitaria di PyCharm.

+1

Perché anche dopo un anno questi thread sono ancora utili ... Jetbrains ora offre una versione gratuita "di comunità" di Pycharm - http://www.jetbrains.com/pycharm/download/index.html –

0

Attualmente utilizzo Pycharm 2.7.3 e anch'io ho riscontrato problemi con il debugging di gevent 0.13.8. Tuttavia, quando ho aggiornato a gevent 1.0rc3 ho scoperto che potevo eseguire il debug di nuovo correttamente.


Nota a margine:

ho solo ora appreso che JetBrains ha avuto una soluzione con la bandiera config. Ero in grado di risolvere il problema quando avevo bisogno di eseguire il debug con il seguente trucco. Onestamente non so perché ha funzionato né quali sono state le conseguenze negative. Ho appena fatto un po 'di prove ed errori e questo è accaduto per consentire il debugging al lavoro quando si utilizza 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