मान लीजिए कि मेरे पास एक पायथन प्रोग्राम है जहां यह परिभाषित करने के लिए जोर दिया गया है कि चीजें कैसे होनी चाहिए, और मैं AssertionError
को फेंकने के बजाय रीड-इवल-लूप के साथ विसंगतियों को कैप्चर करना चाहता हूं।क्या मैं AssertionError पर डिबगिंग पायथन को मजबूर कर सकता हूं?
दी, मैं
if (reality!=expectation):
print("assertion failed");
import pdb; pdb.set_trace();
हो सकता था, लेकिन वह कहीं अधिक एक सादे assert(reality==expectation)
से कोड में बदसूरत है।
मैं pdb.set_trace()
को except:
ब्लॉक में शीर्ष-स्तर पर कॉल कर सकता था, लेकिन फिर मैं विफलता के सभी संदर्भ खो गया होता, है ना? (मेरा मतलब है, अपवाद ऑब्जेक्ट से स्टैकट्रैक पुनर्प्राप्त किया जा सकता है, लेकिन तर्क मान आदि नहीं)
क्या --magic
कमांड-लाइन ध्वज की तरह कुछ भी है जो मुझे आवश्यकतानुसार पायथन 3 दुभाषिया को बदल सकता है?
ग्रहण का उपयोग करें और इसे ब्रेकपॉइंट के साथ डीबग मोड में चलाएं? –
@ जोरन बेस्ले: आपके पास हमेशा एक आईडीई नहीं है। उदाहरण: जब आप एक एसएसएच खोल पर लॉग ऑन होते हैं। – Constantinius
फिर कमांड लाइन से पीडीबी का उपयोग करें और ब्रेकपॉइंट्स का उपयोग करें ... http://www.doughellmann.com/PyMOTW/pdb/ 'python -m pdb somescript.py' आपका '- मैजिक' –