2011-11-22 9 views
5

मैं अक्सर इस तरह के कदम कर और डिबग गति अनुकूलित करना चाहते हैं:डीबग PyDev + ग्रहण - कोड नहीं पुनः लोड ब्रेकप्वाइंट में कोड परिवर्तन के बाद/निलंबित मोड

  1. मैं कुछ breakpoints की स्थापना कर रहा हूँ।
  2. मैं Google Appengine एप्लिकेशन (पायथन 2.5.2+) चला रहा हूं।
  3. जब ब्रेकपॉइंट होता है तो मैं अक्सर बग को ठीक करने के लिए कोड बदलता हूं।
  4. कोड परिवर्तन के बाद फिर से परीक्षण करना चाहते हैं, लेकिन समस्या यह है कि अगर मैं ब्रेकप्वाइंट में कोड बदल/निलंबित मोड आवेदन मेरी कोड के साथ नहीं अद्यतन करता बदलता है - इस प्रकार एक धीमी गति से पुन: लोड की आवश्यकता होती है।

क्या किसी को यह पता है कि निलंबन के बाद पुनः लोड करने के लिए मजबूर करने का मूल कारण क्या है या यह पाइडेव बग/सीमा है?

उत्तर

5

डीबग काम स्रोत लाइन-बाय-लाइन निष्पादित करके नहीं है। डीबग आपके स्रोत को बाइटकोड (.pyc फ़ाइलों) में "संकलित" करता है और उनको निष्पादित करता है, न कि आपके स्रोत

डीबग केवल ट्रैक करता है कि .pyc फ़ाइलों का कौन सा टुकड़ा आपके .py लोगों की रेखा से मेल खाता है और आपकी सुविधा के लिए उस जानकारी को प्रदर्शित करता है, लेकिन .py फ़ाइल स्वयं नहीं है जो डीबगर चलाने के लिए उपयोग कर रहा है कार्यक्रम।

इसलिए, यदि आप स्रोत/.py फ़ाइल बदलते हैं और डीबगर को उन परिवर्तनों को स्वीकार करना चाहते हैं, तो आपको पहले .pyc फ़ाइलों को "पुनः संकलित" करने की आवश्यकता है।

एचटीएच!

+0

तो आप सुझाव देते हैं कि समस्या यह है कि ग्रहण स्रोत परिवर्तन के बाद कोड को पुनर्निर्माण नहीं करता है इसलिए नया * .pyc * .py से उत्पन्न नहीं होता है। मैं जल्द ही इसकी जांच करूंगा। – Chameleon

+0

@Chameleon - जब एक पायथन प्रोग्राम चलाया जाता है, तो एक धागा लॉन्च किया जाता है जो उस पल पर उपलब्ध पीईसी कोड निष्पादित करता है (ज्यादातर मामलों में यह कोड निष्पादित होने से पहले स्मृति में लोड होता है)। प्रोग्राम लॉन्च होने के बाद आप उस कोड को बदल नहीं सकते हैं। एकमात्र चीज जो आप कर सकते हैं वह निष्पादन रोकें, नई पीईसी फाइलें उत्पन्न करें और उन्हें नए लॉन्च के साथ चलाएं। दूसरे शब्दों में: PyDev क्या कर रहा है एकमात्र तरीका डीबगिंग किया जाता है। अतिरिक्त धीमाता शायद इस तथ्य के कारण है कि ग्रहण में लंगड़ा ब्रैडपस की गति है ... :( – mac

+0

जब प्रोग्राम लोड होता है तो मैंने देखा कि अगर मैं कोड बदलता हूं तो यह दो पथ हैं और यह ** ** ब्रेकपॉइंट मोड में नहीं है - यह प्रोग्राम को बदलता है या यह ब्रेकपॉइंट मोड में है - यह प्रोग्राम को बदलता नहीं है। मैं ब्रेकपॉइंट मोड में आज पुनर्निर्माण करने की कोशिश करूंगा, इसे पुनः लोड करने से तेज़ होना चाहिए। अगर पीडीईवी इस तरह के पुनर्निर्माण को बढ़ावा देगा तो कोड बदलने के बाद यह तेज़ होगा। – Chameleon

संबंधित मुद्दे