अजगर pbb - लूप छोड़ें


88

मैं एक लूप का उपयोग करके कैसे छोड़ सकता हूं pdb.set_trace()?

उदाहरण के लिए,

pdb.set_trace()
for i in range(5):
     print(i)

print('Done!')

pdbलूप से पहले संकेत देता है। मैं एक कमांड इनपुट करता हूं। सभी 1-5 मान लौटाए गए हैं और फिर मैं निष्पादित pdbहोने से पहले फिर से संकेत देना चाहूंगा print('Done!')

जवाबों:


137

untilकथन का प्रयास करें ।

लूप की अंतिम पंक्ति (साथ nextया n) पर जाएं और फिर उपयोग करें untilया unt। यह आपको लूप के ठीक बाद अगली पंक्ति में ले जाएगा।

http://www.doughellmann.com/PyMOTW/pdb/ की अच्छी व्याख्या है


लेख से: का उपयोग करके लूप की अंतिम पंक्ति पर जाएं n, और फिर टाइप करें until। यह कम से कम तब तक जाएगा जब तक कि वर्तमान लाइन पार न हो जाए।
सचिन्रुक

सूची बोध के साथ भी काम करता है। आपको अंतिम पंक्ति की परवाह नहीं है।
शिव

आप क्या करेंगे, अगर लूप की अंतिम पंक्ति में जाना बोझिल है? क्या वास्तव fमें R के debugफ़ंक्शन के उपयोग के बराबर नहीं है जो "वर्तमान लूप या फ़ंक्शन के निष्पादन को समाप्त करता है" ( adv-r.hadley.nz/debugging.html )?
कासवेद

तर्कों के बिना until(या इसके संक्षिप्त रूप unt) का उपयोग करना हमेशा एक रेखा से नीचे चला जाएगा (जब तक कि आप रिटर्न स्टेटमेंट नहीं मारते हैं), इसलिए आप इसके बजाय केवल इसे कई बार उपयोग कर सकते हैं n
बोरिस

यह breakpoint()लूप में सेट के साथ काम नहीं करता है python 3VB Editor'मक्खी' पर breakpoints स्वीकार कर सकते हैं, लेकिन यह सबसे अधिक संभावना के साथ ऐसा नहीं है pdb
तिमो

4

आपको लूप के बाद एक ब्रेकपॉइंट सेट करना चाहिए ("ब्रेक मेनफ्रेम:4" मान लें कि उपरोक्त पंक्तियां मेनफ्रेम नामक फाइल में हैं) और फिर जारी रखें ("c")।


2

स्वीकृत उत्तर ( https://pymotw.com/3/pdb/ ) द्वारा उल्लिखित लिंक में , मुझे यह अनुभाग कुछ अधिक उपयोगी लगा:

निष्पादन को एक विशिष्ट लाइन तक चलने देने के लिए, लाइन नंबर को तब तक कमांड पास करें।

यहाँ एक उदाहरण है कि कैसे फिर से काम कर सकते हैं: छोरों:

यहाँ छवि विवरण दर्ज करें

यहाँ छवि विवरण दर्ज करें

यहाँ छवि विवरण दर्ज करें

यह आपको दो चीजों से अलग करता है: अतिरिक्त ब्रेकपॉइंट बनाना, और एक लूप के अंत में नेविगेट करने के लिए (विशेषकर जब आपने पहले से ही पुनरावृत्त किया हो, तो आप डिबगर को फिर से चलाने के बिना सक्षम नहीं होंगे)।

यहाँ पर पायथन डॉक्स है until। Btw मैं pdb++मानक डिबगर (इसलिए स्वरूपण) के लिए ड्रॉप-इन के रूप में उपयोग कर रहा हूं, लेकिन untilदोनों में समान काम करता है।


0

आप लूप के बाद एक और ब्रेकपॉइंट सेट कर सकते हैं और इसके साथ कूद सकते हैं (जब डिबगिंग के साथ) c:

pdb.set_trace()
for i in range(5):
    print(i)

pdb.set_trace()
print('Done!')

-17

अगर मैंने इसे सही तरीके से समझा।

ऐसा करने का एक संभावित तरीका होगा:

एक बार जब आप pdbतुरंत प्राप्त करते हैं । nलूप से बाहर निकलने के लिए बस 10 बार (अगला) हिट करें ।

हालाँकि, मुझे लूप से बाहर निकलने के तरीके के बारे में पता नहीं है pdb

आप rएक समारोह से बाहर निकलने के लिए उपयोग कर सकते हैं ।


5
और क्या होगा अगर लूप 10000000 है? आपका उत्तर बहुत स्पष्ट है।
Hecvd
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.