आप continue
का उपयोग नहीं कर सकते हैं क्योंकि डीबगर में नए बयान पूर्ण और किसी भी अन्य संदर्भ के बिना मान्य होना चाहिए; को लूप निर्माण के अंदर संकलित करते समय दिया जाना चाहिए। !continue
(!
के साथ कमांड को समझने से pdb
को रोकने के लिए) का उपयोग नहीं किया जा सकता है, भले ही डीबगर लूप निर्माण को संसाधित कर रहा हो।
आप j[ump]
आदेश, बशर्ते आप एक बाद में बयान के लिए कूद करने के लिए है का उपयोग कर सकते हैं। यदि आपका पाश के बाद बयान आप चाहते थे के ऊपर कूद करने के रिक्त है, आप केवल 'रिवाइंड' कर सकते हैं:
$ bin/python test.py
> /.../test.py(5)<module>()
-> print(str(i))
(Pdb) l
1 import pdb
2
3 for i in range(10):
4 pdb.set_trace()
5 -> print(str(i))
6
[EOF]
(Pdb) j 3
> /.../test.py(3)<module>()
-> for i in range(10):
j 3
3 लाइन, कुछ भी लंघन नहीं कूद गया; लाइन 3 को फिर से निष्पादित किया जाएगा जिसमें range()
स्थापित किया जाएगा। आप लाइन 4 पर कूद सकते हैं, लेकिन फिर for
लूप अग्रिम नहीं है।
पाइथन के लिए जारी रखने के लिए आपको लूप के अंत में एक और कथन जोड़ने की आवश्यकता होगी। यह कथन print()
या pass
या ऐसा कुछ भी हो सकता है जो आपके राज्य को बदलने की आवश्यकता न हो। आप अंतिम विवरण के रूप में continue
का भी उपयोग कर सकते हैं। मैं i
प्रयोग किया है:
for i in range(10):
pdb.set_trace()
print(str(i))
i # only here to jump to.
डेमो:
$ bin/python test.py
> /.../test.py(5)<module>()
-> print(str(i))
(Pdb) l
1 import pdb
2
3 for i in range(10):
4 pdb.set_trace()
5 -> print(str(i))
6 i # only here to jump to.
7
[EOF]
(Pdb) j 6
> /.../test.py(6)<module>()
-> i # only here to jump to.
(Pdb) c
> /.../test.py(4)<module>()
-> pdb.set_trace()
(Pdb) s
> /.../test.py(5)<module>()
-> print(str(i))
(Pdb) j 6
> /.../test.py(6)<module>()
-> i # only here to jump to.
(Pdb) i
1
(Pdb) c
> /.../test.py(4)<module>()
-> pdb.set_trace()
(Pdb) s
> /.../test.py(5)<module>()
-> print(str(i))
(Pdb) j 6
> /.../test.py(6)<module>()
-> i # only here to jump to.
(Pdb) i
2
Debugger Commands से:
j (UMP) lineno
अगली पंक्ति है कि निष्पादित किया जाएगा निर्धारित करें। केवल नीचे-फ्रेम में उपलब्ध है। यह आपको वापस कूदने और कोड को फिर से निष्पादित करने देता है, या उस कोड को छोड़ने के लिए आगे बढ़ता है जिसे आप चलाने के लिए नहीं चाहते हैं।
यह ध्यान दिया जाना चाहिए कि सभी कूदों की अनुमति नहीं है - उदाहरण के लिए for
लूप के बीच में या finally
खंड से बाहर कूदना संभव नहीं है।
स्रोत
2015-02-09 16:41:00
तो, स्पष्ट होने के लिए, क्या आप चाहते हैं कि कोड 'जारी रखें' कथन निष्पादित किया गया हो? आप उस लूप के लिए 'str (i) 'मुद्रित नहीं करना चाहते हैं, है ना? – Kevin
यह सही है! – Andor
संयोग से, "मैं पीडीबी कमांड और पायथन अभिव्यक्तियों के बीच एक भेद कैसे बना सकता हूं जो सामान्य रूप से पीडीबी कमांड की तरह दिखता है?", आप अपने पायथन अभिव्यक्ति को विस्मयादिबोधक बिंदु से उपसर्ग कर सकते हैं। लेकिन यह विशेष रूप से 'जारी रखने 'के लिए काम नहीं करता है। – Kevin