2010-10-13 23 views
42

मेरी कक्षा के आवृत्ति चर के साथ कुछ हो रहा है। मैं चर को एक संपत्ति बनाना चाहता हूं, और जब भी इसे एक्सेस किया जाता है, तो मैं उस बिंदु तक पहुंचने वाले सभी कोड के स्टैक ट्रेस को प्रिंट करना चाहता हूं, इसलिए मैं देख सकता हूं कि यह कहां से गड़बड़ हो रहा है। जब कोई अपवाद नहीं उठाया जाता है तो मैं स्टैक ट्रेस को कैसे प्रिंट करूं? मुझे पता है कि कोई अपवाद है या नहीं, मैं traceback.format_tb(sys.exc_info()[2]) जैसे कुछ कर सकता हूं।प्रिंट पायथन स्टैक ट्रेस उठाए बिना अपवाद

यह भी उपयोगी हो सकता है कि केवल अंतिम 3-4 स्तरों को मुद्रित करना है, क्योंकि पहले कुछ शायद दिलचस्प नहीं होंगे।

उत्तर

64

traceback.print_stack():

>>> def f(): 
... def g(): 
...  traceback.print_stack() 
... g() 
... 
>>> f() 
    File "<stdin>", line 1, in <module> 
    File "<stdin>", line 4, in f 
    File "<stdin>", line 3, in g 

संपादित करें: आप भी extract_stack उपयोग कर सकते हैं, एक टुकड़ा ले (stack[5:] उदाहरण के लिए पहले 5 स्तरों को बाहर) और format_list का प्रयोग कर एक प्रिंट तैयार स्टैकट्रेस प्राप्त करने के लिए ('\n'.join(traceback.format_list(...)))

+1

संपादन के लिए धन्यवाद, इससे मुझे बहुत ही सामान्य 'full_stack()' फ़ंक्शन के लिए [इस उत्तर] (http://stackoverflow.com/a/16589622/321973) में मदद मिली! –

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