Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

पायथन डीबगर (पीडीबी)

सॉफ्टवेयर डेवलपमेंट शब्दजाल में, 'डिबगिंग' शब्द का इस्तेमाल प्रोग्राम में त्रुटियों का पता लगाने और उन्हें सुधारने की प्रक्रिया के लिए किया जाता है। पायथन के मानक पुस्तकालय में पीडीबी मॉड्यूल शामिल है जो पायथन कार्यक्रमों के डिबगिंग के लिए उपयोगिताओं का एक सेट है।

डिबगिंग कार्यक्षमता को Pdb वर्ग में परिभाषित किया गया है। मॉड्यूल आंतरिक रूप से bdb और cmd मॉड्यूल का उपयोग करता है।

पीडीबी मॉड्यूल में एक बहुत ही सुविधाजनक कमांड लाइन इंटरफ़ेस है। इसे -एम स्विच का उपयोग करके पायथन लिपि के निष्पादन के समय आयात किया जाता है

पायथन-एम pdb script.py

डिबगर कैसे काम करता है, इसके बारे में अधिक जानने के लिए, आइए पहले एक पायथन मॉड्यूल (fact.py) को इस प्रकार लिखें -

def fact(x):f =1 के लिए i रेंज में(1,x+1):प्रिंट (i) f =f * i रिटर्न fif __name__=="__main__":प्रिंट ("3 का फैक्टोरियल =" ,तथ्य(3))

इस मॉड्यूल को कमांड लाइन से डीबग करना प्रारंभ करें। इस मामले में निष्पादन कोड में पहली पंक्ति में बाईं ओर तीर (->) दिखा कर रुक जाता है, और डीबगर प्रॉम्प्ट (पीडीबी) उत्पन्न करता है

C:\python36>python -m pdb fact.py> c:\python36\fact.py(1)()-> def fact(x):(Pdb)

सभी डिबगर कमांड की सूची देखने के लिए डिबगर प्रॉम्प्ट के सामने 'help' टाइप करें। किसी भी कमांड के बारे में अधिक जानने के लिए 'help ' सिंटैक्स का उपयोग करें।

पायथन डीबगर (पीडीबी)

सूची कमांड पूरे कोड को -> प्रतीक के साथ एक पंक्ति के बाईं ओर सूचीबद्ध करता है जिस पर प्रोग्राम रुका हुआ है।

(Pdb) list1 -> def fact(x):2 f =13 for i in range(1,x+1):4 print (i)5 f =f * i6 रिटर्न f7 अगर __name__=="__main__ ":8 प्रिंट ("3 का फैक्टोरियल =", फैक्ट(3))

प्रोग्राम लाइन से लाइन में जाने के लिए स्टेप या नेक्स्ट कमांड का उपयोग करें।

(Pdb) step>
 c:\python36\fact.py(7)()-> if __name__=="__main__":(Pdb) next> c:\python36\fact.py(8) <मॉड्यूल>()-> प्रिंट ("3 =" का फैक्टोरियल, फैक्ट (3)) (पीडीबी) नेक्स्ट123फैक्टोरियल ऑफ 3=6--रिटर्न--> c:\python36\fact.py(8)<मॉड्यूल>( )->कोई नहीं-> प्रिंट ("3 का फैक्टोरियल =", फैक्ट(3))

स्टेप और नेक्स्ट कमांड के बीच प्रमुख अंतर यह है कि स्टेप कमांड किसी प्रोग्राम को एक फंक्शन के भीतर बंद कर देगा जबकि अगला कमांड एक कॉल किए गए फंक्शन को निष्पादित करता है और उसके बाद रुक जाता है।

C:\python36>python -m pdb fact.py> c:\python36\fact.py(1)()-> def fact(x):(Pdb) s> c:\python36\ fact.py(7)()-> if __name__=="__main__":(Pdb) n> c:\python36\fact.py(8)()-> Print ("3 का फैक्टोरियल" =", fact(3))(Pdb) s--Call--> c:\python36\fact.py(1)fact()-> def fact(x):(Pdb) n> c:\python36\ fact.py(2)fact()->f =1(Pdb) n> c:\python36\fact.py(3)fact()-> for i इन रेंज(1,x+1):(Pdb) n> c:\python36\fact.py(4)fact()-> प्रिंट (i)(Pdb) n1> c:\python36\fact.py(5)fact()->f =f * i(Pdb ) n> c:\python36\fact.py(3)fact()-> for i इन रेंज(1, x + 1):(Pdb) n> c:\python36\fact.py(4)fact() -> प्रिंट (i)(Pdb) f,i(1, 2)(Pdb)

जब कोई प्रोग्राम कार्य करने के लिए कॉल का सामना करता है और फ़ंक्शन समाप्त होने पर --return--- तब स्टेप कमांड --कॉल—संकेत भी दिखाता है। किसी भी समय, हम एक निश्चित चर के मान को केवल उसका नाम दर्ज करके जांच सकते हैं।

आप ब्रेक कमांड द्वारा प्रोग्राम के भीतर ब्रेकप्वाइंट सेट कर सकते हैं। लाइन नंबर (जिस पर ब्रेकपॉइंट सेट किया जाना चाहिए) दिया जाना चाहिए। उदाहरण के लिए 'ब्रेक 5' मौजूदा प्रोग्राम की लाइन 5 पर एक ब्रेकपॉइंट सेट करेगा।

(Pdb) list2 f =13 के लिए i रेंज में(1, x + 1):4 प्रिंट (i)5 f =f * i6 रिटर्न f7 -> अगर __name__=="__main__":8 प्रिंट ("फैक्टोरियल" of 3=",fact(3))[EOF](Pdb) 5Breakpoint 1 को c:\python36\fact.py:5(Pdb) Continue1> c:\python36\fact.py(5)fact() पर तोड़ें () -> f =f * i(Pdb) breakNum Type Disp Enb जहां1 ब्रेकप्वाइंट c:\python36\fact.py:5breakpoint पहले से ही 1 बार हिट (Pdb) Continue2> c:\python36\fact.py(5)fact( )-> f =f * i(Pdb) bNum Type Disp Enb जहां1 ब्रेकप्वाइंट c:\python36\fact.py:5ब्रेकप्वाइंट पहले से ही 2 बार हिट हो चुका है पर हां रखें। 

जब 'जारी रखें' आदेश जारी किया जाता है, तो प्रोग्राम निष्पादन तब तक जारी रहेगा जब तक कि यह एक ब्रेकपॉइंट का सामना न करे। सभी ब्रेकप्वाइंट प्रदर्शित करने के लिए, बिना लाइन नंबर के साधारण इश्यू ब्रेक कमांड।

किसी भी ब्रेकपॉइंट को अक्षम/सक्षम कमांड द्वारा अक्षम/सक्षम किया जा सकता है या स्पष्ट आदेश द्वारा पूरी तरह से साफ़ किया जा सकता है।

(Pdb) c:\python36\fact.py:5(Pdb) bNum Type Disp Enb पर 1 डिसेबल ब्रेकप्वाइंट 1 को डिसेबल करें जहां 1 ब्रेकप्वाइंट c:\python36\fact.py:5ब्रेकप्वाइंट पहले से ही 2 बार हिट हो चुका है

पीडीबी डीबगर का उपयोग पायथन लिपि के भीतर से भी किया जा सकता है। ऐसा करने के लिए, स्क्रिप्ट के शीर्ष पर pdb आयात करें और प्रोग्राम के अंदर set_trace() विधि का उपयोग करें।

आयात pdbdef fact(x):f =1for i इन रेंज(1,x+1):pdb.set_trace()print (i)f =f * ireturn fif __name__=="__main__":print ("फैक्टोरियल of 3=",तथ्य(3))

डिबगर का व्यवहार ठीक वैसा ही होगा जैसा हम इसे कमांड लाइन वातावरण में पाते हैं।


  1. पायथन यील्ड कीवर्ड:एक गाइड

    पायथन यील्ड कीवर्ड का उपयोग कैसे करें पायथन में जेनरेटर सबसे सहज अवधारणा नहीं हैं। मामले को बदतर बनाने के लिए, वे यील्ड नामक एक विशेष कीवर्ड का उपयोग करते हैं, भले ही जनरेटर स्वयं कार्य कर रहे हों। उपज कीवर्ड क्या है? यह रिटर्न स्टेटमेंट की तुलना कैसे करता है? वे अच्छे प्रश्न हैं। इस गाइड में, ह

  1. जावास्क्रिप्ट में डिबगर स्टेटमेंट

    जावास्क्रिप्ट में डिबगर स्टेटमेंट का उपयोग कोड में ब्रेकपॉइंट सेट करने के लिए किया जाता है। जैसे ही यह डिबगर स्टेटमेंट का सामना करता है और डिबगर फ़ंक्शन (यदि उपलब्ध हो) को कॉल करता है, तो कोड निष्पादन को रोक देता है। जावास्क्रिप्ट में डिबगर स्टेटमेंट को लागू करने के लिए कोड निम्नलिखित है - उदाहरण &

  1. पायथन में सूची का आंतरिक कार्य

    इस ट्यूटोरियल में, हम पायथन 3.x में सूची के आंतरिक कामकाज के बारे में जानेंगे। या जल्दी। जब हम प्रत्येक चरण में एक पायथन स्टेटमेंट लिखते हैं, तो हम ऑब्जेक्ट और फ्रेम फॉर्मेशन को भी देखेंगे। सूची को प्रारंभ करना:इसका अर्थ है कि हम कुछ तत्वों के साथ एक सूची बना रहे हैं। >>> lis=[1,2,3,4]