2012-07-15 12 views
18

मैं गेवेन्ट के साथ खेल रहा हूं, और मुझे यह बहुत पसंद है। हालांकि मैं एक समस्या में भाग गया है। ब्रेकपॉइंट हिट नहीं किया जा रहा है, और डिबगिंग काम नहीं करता है (विजुअल स्टूडियो पायथन टूल्स और ग्रहण पायडेव दोनों का उपयोग करके)। यह monkey.patch_all() के बाद होता है।गीवेंट बंदर-पैचिंग और ब्रेकपॉइंट्स

यह मेरे लिए एक बड़ी समस्या है, और दुर्भाग्य से यह gevent के उपयोग के लिए एक अवरोधक है। मुझे few threads मिला है जो इंगित करता है कि गीवेंट ब्रेक डिबगिंग करता है, लेकिन मुझे लगता है कि इसके लिए एक समाधान है।

क्या किसी को पता है कि डिबगिंग और ब्रेकपॉइंट्स को गीवेंट और बंदर पैचिंग के साथ कैसे काम करना है?

+0

ठीक है, 80% में हम "प्रिंट" का उपयोग क्यों नहीं करते हैं? हालांकि यह वास्तव में आप जो खोज रहे हैं वह एक बग या दो को ठीक करने में मदद कर सकता है। – Moonwalker

उत्तर

3

pdb - The Python Debugger

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

एक आकर्षण की तरह काम करता है। – kkurian

8

PyCharm आईडीई समस्या का हल। कॉन्फ़िगरेशन ध्वज सेट करने के बाद यह Gevent कोड डिबगिंग का समर्थन करता है: http://blog.jetbrains.com/pycharm/2012/08/gevent-debug-support/

दुर्भाग्यवश, इस समय मुझे भूगर्भ को डिबग करने में सक्षम एक निःशुल्क टूल नहीं पता है।

यूपीडी: वहां है! अब PyCharm का एक समुदाय संस्करण है।

+1

क्योंकि यहां तक ​​कि एक साल या बाद में ये धागे अभी भी उपयोगी हैं ... जेटब्रेन अब पिचर्म का एक मुफ्त "समुदाय" संस्करण प्रदान करता है - http://www.jetbrains.com/pycharm/download/index.html –

0

मैं वर्तमान में पिचर्म 2.7.3 का उपयोग करता हूं और मुझे भी गीवेंट 0.13.8 ब्रेकिंग डीबगिंग के साथ समस्याएं थीं। हालांकि जब मैंने gevent 1.0rc3 पर अपडेट किया तो मैंने पाया कि मैं फिर से ठीक से डीबग कर सकता हूं।


Sidenote:

मैं केवल अभी सीखा है कि JetBrains config ध्वज के साथ एक समाधान के लिए किया था। मुझे समस्या के आसपास हो रहा था जब मुझे निम्नलिखित हैक से डीबग करने की आवश्यकता थी। मैं ईमानदारी से नहीं जानता कि यह क्यों काम करता है और न ही नकारात्मक नतीजे क्या थे। मैंने अभी थोड़ा परीक्षण और त्रुटि की है और यह 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