2010-06-22 8 views
5

जब मेरे प्रक्रिया समाप्त हो जाती है, मैं stderr कि तरह लग रहा है करने के लिए उत्पादन मिलता है:कैसे एक डिबग अजगर शटडाउन होने पर एक अपवाद

Exception exceptions.TypeError: "'NoneType' object is not callable" in <function <lambda> at 0x5507d70> ignored 

मेरे समझ के साथ कि इस अपवाद कचरा संग्रहण के दौरान उत्पन्न किया जा रहा के कारण होता है (डेल()?) या कमजोर कॉलबैक जो मुझे पता है इस एप्लिकेशन में उपयोग किया जा रहा है।

यह पता लगाने के लिए कुछ तरीके क्या हैं कि यह कहां से आ रहा है?

+0

क्या आप लैम्ब्डा को वास्तविक कार्यों के साथ बदल सकते हैं? –

+1

यह बहुत सामान्य है। क्या आप अधिक उत्पादन पोस्ट कर सकते हैं? और संभवतः कोड की अंतिम कुछ पंक्तियां जिन्हें निष्पादित किया जाता है। इतनी छोटी जानकारी के साथ, यह बताने में मुश्किल है कि क्या आप बस एक अप्रत्याशित गलत सेट चर या किसी चीज पर बंपिंग कर रहे हैं। – rbp

+0

मैं इस तरह की त्रुटि के लिए एक सामान्य उद्देश्य समाधान की तलाश में हूं। असल में मैं सिर्फ यह जानना चाहता हूं कि ऐसा होने पर दुभाषिया से अधिक जानकारी प्राप्त करने का कोई तरीका है या नहीं। एक पूर्ण निशान अच्छा होगा। मुझे संदेह है कि वास्तविक समस्या इस मॉड्यूल को बुलाए जाने से पहले कचरा प्राप्त करने वाले कुछ मॉड्यूल के कारण है। – rhettg

उत्तर

1

यहां मुद्दा लैम्बडास के साथ नहीं है: लैम्ब्डा फ़ंक्शन में डीबग जानकारी है।

a = lambda: 1 
print a.func_code.co_filename 
print a.func_code.co_firstlineno 

(। a.__code__ python3 में)

समस्या वापस आने अपवाद स्वरूपण के साथ है: यह एक स्टैक ट्रेस, जो है, जहां इस जानकारी सामान्य रूप से दिखाया गया है दिखाई नहीं दे रहा है।

यदि आप इसे सुधारने की कोशिश करना चाहते हैं, तो समस्या PyErr_WriteUnraisable() में पाइथन/error.c में दिखाई देती है। मुझे नहीं पता कि यह मुश्किल बनाने में कोई गहरा मुद्दा है, लेकिन मुझे संदेह नहीं है। PyErr_Fetch() को कॉल करने के बाद ट्रेसबैक "टीबी" में होना चाहिए।

6

-v विकल्प के साथ अपने पायथन प्रोग्राम चलाएं ताकि आप देख सकें कि अंतिम चरण के दौरान किस बिंदु पर अपवाद फेंक दिया जाता है। जब मुझे एक ही स्थिति का सामना करना पड़ा तो इससे मेरी मदद मिली; sqlalchemy के साथ भी ...

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