2011-06-10 9 views
47

pdbnext निर्देश सूची समझों पर कदम नहीं उठाता है, बल्कि यह प्रत्येक पुनरावृत्ति के माध्यम से कदम उठाता है। क्या उनके ऊपर कदम उठाने का कोई तरीका है ताकि सूची समझ के बाद अगली पंक्ति में डिबगिंग जारी रहेगी?आप पाइथन के डीबगर (पीडीबी) में एक सूची समझ को कैसे छोड़ते हैं?

मुझे कोड सूचीबद्ध करने, अगली पंक्ति में ब्रेकपॉइंट सेट करने और फिर अगले ब्रेकपॉइंट पर निष्पादन जारी रखने का सहारा लेना पड़ा। यह कष्टप्रद है और मुझे लगा कि एक बेहतर तरीका होना चाहिए।

उत्तर

59

आप until कमांड का उपयोग कर सकते हैं। pdb में help until के आउटपुट:

unt (IL)
वर्तमान एक न आ जाए या से अधिक संख्या के साथ लाइन तक निष्पादन जारी रखें जब तक वर्तमान फ्रेम रिटर्न

0

स्वेन के जवाब पर विस्तार से चर्चा करते क्योंकि मुझे हाल ही में एक सहयोगी को until और next का वर्णन करना था। यह सूची समझ यह है कि अगले के साथ stuck के लिए लेकिन सामान्य रूप में छोरों .:

until आदेश, next की तरह है, सिवाय इसके कि यह स्पष्ट रूप से जब तक निष्पादन के साथ एक ही समारोह में एक सीमा तक पहुंच जाते जारी है के लिए विशिष्ट नहीं है वर्तमान मूल्य से अधिक एक लाइन संख्या।

कि आप until

साथ छोरों पर कदम बस step और next संपूर्णता के लिए कवर करने के लिए कर सकते हैं इसका मतलब है:

step आदेश वर्तमान पंक्ति पर अमल और उसके बाद बंद करने के लिए प्रयोग किया जाता है अगले निष्पादन बिंदु

जिसका अर्थ है कि यह निर्देश द्वारा निर्देश जाएगा। नोट ; के साथ instrucitons concatenating एक निर्देश के रूप में संभाला जाएगा।

var A=0; var B=0 #Note: that will count as one instruction 

अगले आदेश कदम की तरह है, लेकिन कार्यों बयान निष्पादित किया जा रहा से कहा जाता है में प्रवेश नहीं करता। असल में, यह एक ही ऑपरेशन में वर्तमान फ़ंक्शन में अगले कथन में फ़ंक्शन कॉल के माध्यम से सभी तरह से कदम उठाता है।

next एकाधिक चर परिभाषाओं के एक समारोह में एकाधिक निर्देशों पर कूदने में मदद करता है, यह उन सभी पर कूद जाएगा।

उदाहरण:: pdb_until

यहाँ एक उदाहरण है कि परिदृश्य दर्शाता है।py

aVar = 3 
x = [i for i in range(0,30)] 
bVar = 5 

PDB के साथ इस चल रहा है:

> pdb_until.py(1)<module>() 
-> aVar = 3 
(Pdb) step    #our Input, we step 
> pdb_until.py(2)<module>() 
-> x = [i for i in range(0,10)] 
(Pdb) next    #our Input, next 
> pdb_until.py(2)<module>() 
-> x = [i for i in range(0,10)] 
(Pdb) next    #our Input, we are now stuck on line 2 
> pdb_until.py(2)<module>() 
-> x = [i for i in range(0,10)] 
(Pdb) until    #our Input, until steps over (runs list comp) 

स्रोत: अजगर मानक पुस्तकालय उदाहरण से, डौग Hellmann

python -m pdb pdb_until.py 

हमारे इंटरैक्टिव सत्र शुरू होता है

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