"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > बेहतर &#printf&# डिबगिंग

बेहतर &#printf&# डिबगिंग

2024-11-03 को प्रकाशित
ब्राउज़ करें:994

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

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

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

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

नोट: यह आलेख 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;
}

लॉगिंग ब्रेकप्वाइंट

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

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

Depuración

लॉगिंग ब्रेकप्वाइंट सेट करने के लिए, Shift दबाए रखें, फिर मार्जिन पर क्लिक करें। एक नियमित ब्रेकप्वाइंट के विपरीत, यह प्रोग्राम निष्पादन को निलंबित नहीं करता है, बल्कि कंसोल पर प्रिंट करता है।

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

Depuración

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

जब लॉग ब्रेकप्वाइंट असंख्य हो जाते हैं, तो आप उन्हें ब्रेकप्वाइंट डायलॉग बॉक्स में ट्रैक और प्रबंधित कर सकते हैं (Run | ब्रेकप्वाइंट देखें ):

Depuración

आप उनके लिए कस्टम समूह भी बना सकते हैं:

Depuración

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

बारंबार इवेंट लॉग

ऐसी घटनाओं के लिए जो प्रोग्राम निष्पादन के दौरान बहुत अधिक घटित होती हैं, प्रत्येक घटना को व्यक्तिगत रूप से लॉग करना अनावश्यक हो सकता है। इससे न केवल कंसोल संदेशों से भर जाता है, बल्कि बहुत सारे I/O इंटरैक्शन डिबगिंग सत्र को काफी धीमा कर सकते हैं।

Depuración

इन आयोजनों के लिए, पास काउंट फ़ंक्शन का उपयोग करना उपयोगी हो सकता है। आप इसे ब्रेकपॉइंट्स.

डायलॉग बॉक्स में एक्सेस कर सकते हैं।

Depuración

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

सारांश

चाहे आप प्रिंट स्टेटमेंट डाल रहे हों या डिबगिंग के लिए लॉगिंग ब्रेकप्वाइंट सेट कर रहे हों, आधुनिक टूल में आपके डिबगिंग अनुभव को बेहतर बनाने की सुविधाएं हैं। इस पोस्ट के साथ, मैं यह सुनिश्चित करना चाहता था कि आप इन छोटी-छोटी युक्तियों से अवगत हों जो पूरी प्रक्रिया को और अधिक मनोरंजक बनाती हैं।

यदि आप डिबगिंग और प्रोफाइलिंग से संबंधित अधिक लेखों में रुचि रखते हैं, तो मेरे कुछ अन्य लेख देखें:

  • Debugger.godMode() - डिबगर के साथ एक JVM एप्लिकेशन को हैक करें
  • धीमे डिबगर का समस्या निवारण करें
  • createDirectories() में क्या गलत है? - सीपीयू प्रोफाइलिंग के लिए गाइड
  • ब्रेकप्वाइंट के बिना डिबग
विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/flounder4130/depuracion-printf-mejarada-26l1?1 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए स्टडी_गोलंग@163.com से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3