सबसे आम डिबगिंग तकनीकों में से एक, 'प्रिंटफ' डिबगिंग विशेष रूप से लोकप्रिय है क्योंकि अधिकांश लोग अपना पहला प्रोग्राम लिखते समय इसे सहजता से सीखते हैं।
'प्रिंटफ' डिबगिंग बहुत सुलभ है क्योंकि इसके लिए आपको किसी विशेष उपकरण की आवश्यकता नहीं है। जब आप अपने पहले बग का सामना करते हैं, इससे पहले कि आप जानते हों कि डिबगर क्या है, स्वाभाविक बात यह है कि आपका प्रोग्राम चरण दर चरण वेरिएबल प्रिंट करता है, ताकि आप कंसोल में निष्पादन का पालन कर सकें।
यद्यपि यह सबसे बुनियादी डिबगिंग तकनीकों में से एक है, लेकिन अनुभवी डेवलपर्स द्वारा भी इसका व्यापक रूप से उपयोग किया जाता है। यह आपको किसी भी प्रकार की समस्या की जांच करने में मदद कर सकता है, जैसे कि उप-इष्टतम दिनचर्या, असंगत स्थिति, मल्टीथ्रेडिंग समस्याएं, और बहुत कुछ।
जैसा कि मैंने पहले ही बताया है, इस तकनीक के लिए आपको आईडीई जैसे किसी विशेष उपकरण का उपयोग करने की आवश्यकता नहीं है। हालाँकि, यदि आप इसका उपयोग कर रहे हैं, तो यह आपको प्रोग्राम स्थिति रिकॉर्ड करने में और भी अधिक कुशल बना सकता है।
नोट: यह आलेख IntelliJ IDEA की विशेषताएं दिखाता है। समान सुविधाएँ अन्य IDE में उपलब्ध हो भी सकती हैं और नहीं भी। यदि आप किसी भिन्न टूल का उपयोग कर रहे हैं, तो यह देखने के लिए उसके दस्तावेज़ की जाँच करने पर विचार करें कि क्या ये सुविधाएँ भी मौजूद हैं।
InteliJ IDEA सबसे आम डिबग लॉगिंग पैटर्न के लिए लाइव टेम्पलेट प्रदान करता है। डिबग लॉगिंग के लिए लाइव टेम्पलेट का उपयोग करने के लिए, संबंधित संक्षिप्त नाम दर्ज करें और टैब दबाएं। IntelliJ IDEA प्रिंट स्टेटमेंट तैयार करेगा और उसे कर्सर में डालेगा।
आइए कुछ उदाहरण देखें।
public static BufferedImage recolor(BufferedImage in, BufferedImage mask, int newColor) { // escriba 'soutp' aquí, luego presione Tab return null; }
जनरेट किया गया कोड:
public static BufferedImage recolor(BufferedImage in, BufferedImage mask, int newColor) { System.out.println("in = " in ", mask = " mask ", newColor = " newColor); return null; }
public static double coolMethod(double parameter) { double a = Math.random(); double b = Math.random(); // escriba 'soutv' aquí, presione Tab y luego seleccione el valor return a * b * parameter; }
जनरेट किया गया कोड:
public static double coolMethod(double parameter) { double a = Math.random(); double b = Math.random(); System.out.println("b = " b); return a * b * parameter; }
public static BufferedImage recolor(BufferedImage in, BufferedImage mask, int newColor) { // escriba 'soutm' aquí return null; }
जनरेट किया गया कोड:
public static BufferedImage recolor(BufferedImage in, BufferedImage mask, int newColor) { System.out.println("ImageUtils.recolor"); return null; }
प्रिंट स्टेटमेंट के साथ डिबगिंग का एक नुकसान यह है कि वे मैन्युअल प्रबंधन के ओवरहेड का परिचय देते हैं। आप उन्हें जल्दी से चालू और बंद नहीं कर सकते, और आप निश्चित रूप से उन्हें शिपिंग और उत्पादन में चलाने की गलती नहीं करना चाहेंगे।
इस कारण से, यदि आपको डिबगिंग उद्देश्यों के लिए कुछ लॉग करने की आवश्यकता है, तो मैं लॉगिंग ब्रेकप्वाइंट का उपयोग करने की सलाह दूंगा, क्योंकि उन्हें संभालना बहुत आसान है।
लॉगिंग ब्रेकप्वाइंट सेट करने के लिए, Shift दबाए रखें, फिर मार्जिन पर क्लिक करें। एक नियमित ब्रेकप्वाइंट के विपरीत, यह प्रोग्राम निष्पादन को निलंबित नहीं करता है, बल्कि कंसोल पर प्रिंट करता है।
डिफ़ॉल्ट रूप से, यह एक संदेश है जो दर्शाता है कि प्रोग्राम इस लाइन तक पहुंच गया है। यदि आप वर्तमान स्टैक ट्रेस या कस्टम अभिव्यक्ति के परिणाम को लॉग करना पसंद करते हैं, तो आप ब्रेकपॉइंट सेटिंग्स में मूल्यांकन और लॉग चेकबॉक्स के पास विकल्पों का भी उपयोग कर सकते हैं।
नोट: लॉगिंग अभिव्यक्तियों से सावधान रहें। जो दुष्प्रभाव पैदा करते हैं उनका मूल्यांकन करना नए बग या अप्रत्याशित व्यवहार का स्रोत हो सकता है। इसके अतिरिक्त, जब हॉट कोड में उपयोग किया जाता है, तो वे आपके प्रोग्राम को काफी धीमा कर सकते हैं।
जब लॉग ब्रेकप्वाइंट असंख्य हो जाते हैं, तो आप उन्हें ब्रेकप्वाइंट डायलॉग बॉक्स में ट्रैक और प्रबंधित कर सकते हैं (Run | ब्रेकप्वाइंट देखें ):
आप उनके लिए कस्टम समूह भी बना सकते हैं:
इससे आपको अपने ब्रेकप्वाइंट को केंद्रीय रूप से प्रबंधित करने में मदद मिलेगी। उदाहरण के लिए, आप किसी विशेष बग से संबंधित एक समूह बना सकते हैं और इसे बाद के लिए सहेज सकते हैं। जब समस्या गायब हो जाए, तो आप इसे बंद कर दें। इस तरह, यदि समस्या दोबारा सामने आती है, तो आपको सब कुछ नए सिरे से बनाने की ज़रूरत नहीं है। आप बस समूह को वापस चालू करें।
ऐसी घटनाओं के लिए जो प्रोग्राम निष्पादन के दौरान बहुत अधिक घटित होती हैं, प्रत्येक घटना को व्यक्तिगत रूप से लॉग करना अनावश्यक हो सकता है। इससे न केवल कंसोल संदेशों से भर जाता है, बल्कि बहुत सारे I/O इंटरैक्शन डिबगिंग सत्र को काफी धीमा कर सकते हैं।
इन आयोजनों के लिए, पास काउंट फ़ंक्शन का उपयोग करना उपयोगी हो सकता है। आप इसे ब्रेकपॉइंट्स.
डायलॉग बॉक्स में एक्सेस कर सकते हैं।आपके द्वारा पास काउंट को एक विशिष्ट मान पर सेट करने के बाद, संबंधित ब्रेकप्वाइंट केवल हर बार एन-टाइम तक पहुंचने पर ट्रिगर किया जाएगा, यह सुनिश्चित करते हुए कि लॉगिंग एक उपद्रव नहीं बनेगी।
चाहे आप प्रिंट स्टेटमेंट डाल रहे हों या डिबगिंग के लिए लॉगिंग ब्रेकप्वाइंट सेट कर रहे हों, आधुनिक टूल में आपके डिबगिंग अनुभव को बेहतर बनाने की सुविधाएं हैं। इस पोस्ट के साथ, मैं यह सुनिश्चित करना चाहता था कि आप इन छोटी-छोटी युक्तियों से अवगत हों जो पूरी प्रक्रिया को और अधिक मनोरंजक बनाती हैं।
यदि आप डिबगिंग और प्रोफाइलिंग से संबंधित अधिक लेखों में रुचि रखते हैं, तो मेरे कुछ अन्य लेख देखें:
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3