CodeGym समुदाय में सभी को नमस्कार! आज आइए डिबगिंग के बारे में बात करते हैं - यह क्या है और IntelliJ IDEA में डिबग कैसे करें। यह लेख उन लोगों के लिए अभिप्रेत है जिन्हें पहले से ही जावा कोर का न्यूनतम ज्ञान है। पुस्तकालयों को प्रकाशित करने के लिए कोई ढाँचा या जटिल प्रक्रिया नहीं होगी। इत्मीनान से टहलना। तो अपने आप को सहज बनाएं और चलिए शुरू करें!
दस्तावेज़ीकरण रीडमे फ़ाइल के अनुसार , जो प्रोजेक्ट की रूट डायरेक्टरी में पाया जा सकता है, सभी फूलों का अपेक्षित व्यवहार जिसमें से अमृत एकत्र किया जाता है, एकत्रित शहद की मात्रा के लिए है (जो एक डबल का रूप लेता है ) आधे के बराबर होना चाहिए। एकत्रित अमृत। परियोजना में निम्नलिखित वर्ग हैं:
अब सब कुछ ठीक हो जाएगा, लेकिन यह उत्तर गलत है... प्रलेखन README फ़ाइल के अनुसार , अमृत 2 से 1 के अनुपात में शहद में परिवर्तित हो जाता है:
प्रलेखन रीडमे फ़ाइल में एक त्रुटि है और इसे अद्यतन करने की आवश्यकता है। आइए रीडमे फ़ाइल को अपडेट करें:
स्टैक ओवरफ़्लो CodeGym पर लेख पढ़ सकते हैं :)
आपको डिबग मोड की आवश्यकता क्यों है
आइए तुरंत अपने लिए कुछ स्पष्ट करें: बग के बिना कोई कोड नहीं है... यह जीवन कैसे काम करता है। इसलिए, हमें टुकड़ों में नहीं गिरना चाहिए और हार नहीं माननी चाहिए यदि हमारा कोड हमारी अपेक्षा के अनुरूप काम नहीं करता है। लेकिन हमें क्या करना चाहिए? ठीक है, हमSystem.out.println
हर जगह बयान डाल सकते हैं और फिर त्रुटि खोजने की उम्मीद में कंसोल आउटपुट के माध्यम से कंघी कर सकते हैं। उस ने कहा, आप (और लोग करते हैं) सावधानीपूर्वक लॉगिंग का उपयोग करके डीबग कर सकते हैं। लेकिन अगर आप अपना कोड स्थानीय मशीन पर चला सकते हैं, तो डीबग मोड का उपयोग करना बेहतर है। मैं तुरंत ध्यान देना चाहता हूं कि इस लेख में हम IntelliJ IDEA का उपयोग करके किसी प्रोजेक्ट को डीबग करने पर विचार करेंगे।
डिबग मोड क्या है?
डिबग मोड डिबगिंग (चेकिंग) रनिंग कोड के लिए है। यह आपके लिए निर्धारित स्थानों पर निष्पादन को रोकना और यह देखना संभव बनाता है कि चीजें कैसे आगे बढ़ रही हैं। यह आपको कोड में किसी विशेष स्थान पर प्रोग्राम की स्थिति को समझने देता है। यह ठीक उसी तरह है जैसे घड़ी को रोक पाना और बगल से हर चीज को देखना। बिल्कुल सटीक? हमारा उद्देश्य हमारे प्रिय IntelliJ IDEA विकास वातावरण का उपयोग करके एप्लिकेशन को डीबग करना जल्दी और आसानी से सीखना है।डिबगिंग शुरू करने के लिए आपको क्या चाहिए
यहाँ कुछ मुफ्त सलाह दी गई है: इस लेख को पढ़ते समय, वह सब कुछ करें जो यहाँ वर्णित किया जाएगा - आपके पास वह सब कुछ है जो आपको करने की आवश्यकता है। जिसकी आपको जरूरत है:- IntelliJ IDEA संस्करण 2019.3.1 या उच्चतर। यदि किसी के पास यह नहीं है, तो यहां एक लिंक दिया गया है जहां से आप इसे डाउनलोड कर सकते हैं । सामुदायिक संस्करण डाउनलोड करें — यही वह संस्करण है जिसका मैं उपयोग करूंगा।
- इस GitHub प्रोजेक्ट को क्लोन करें और इसे IDEA के माध्यम से आयात करें।
बस थोड़ा सा सिद्धांत ... मैं वादा करता हूँ: डी
थोड़ा सा भी डिबगिंग शुरू करने के लिए, आपको यह समझने की आवश्यकता है कि ब्रेकप्वाइंट क्या है और कुछ हॉट की से परिचित होना चाहिए। एक ब्रेकपॉइंट एक विशेष मार्कर है जो इंगित करता है कि आप एप्लिकेशन के निष्पादन को कहां रोकना चाहते हैं, संभवतः एप्लिकेशन स्थिति के आधार पर। आप बाईं ओर के पैनल पर बायाँ-क्लिक करके या कोड स्थान पर क्लिक करके और Ctrl+F8 दबाकर एक ब्रेकपॉइंट सेट कर सकते हैं । आइए तीन प्रकार के ब्रेकप्वाइंट देखें: लाइन ब्रेकप्वाइंट, फील्ड वॉचपॉइंट और और मेथड ब्रेकपॉइंट। यह कैसा दिखता है:-
एक लाइन पर:
यदि किसी कथन में एक लैम्ब्डा अभिव्यक्ति है, तो आईडिया आपको यह चुनने के लिए प्रेरित करता है कि ब्रेकपॉइंट को पूरे कथन पर या विशेष रूप से लैम्ब्डा अभिव्यक्ति पर रखना है या नहीं:
-
एक विधि पर:
-
एक वर्ग पर:
- Bee.java:24 — लाइन 24 पर Bee क्लास में
- Main.java:14 - मेन क्लास में लाइन 14 पर
आइए डिबगिंग नामक इस चीज़ को करते हैं!
मैं परिवार के मधुमक्खी पालकों की एक लंबी कतार से आता हूं, इसलिए डिबगिंग को चित्रित करने के लिए मैंने जो प्रोजेक्ट बनाया है, उसमें मधुमक्खियों द्वारा अमृत इकट्ठा करने, अमृत को शहद में संसाधित करने और फिर मधुमक्खी के छत्ते से शहद प्राप्त करने की प्रक्रिया का वर्णन किया गया है।- मधुमक्खी - एक साधारण कार्यकर्ता मधुमक्खी
- बीक्वीन - रानी मधुमक्खी
- मधुमक्खी का छत्ता – मधुमक्खी का छत्ता
- HoneyPlant — एक शहद का पौधा (अमृत स्रोत) जिससे अमृत एकत्र किया जाता है
- मुख्य - यह वह जगह है जहाँ हम पाते हैं
public static void main()
, वह विधि जहाँ निष्पादन शुरू होता है।
main()
विधि चलाते हैं, तो हम पाते हैं कि न केवल हमारा कार्यक्रम शहद की मात्रा की गणना नहीं करता है, यह एक अपवाद भी फेंकता है ... हमें जांच करने और यह निर्धारित करने की आवश्यकता है कि समस्या क्या है। निचले दाएं कोने में ट्रेस स्टैक से, हम देख सकते हैं कि एक रनटाइम अपवाद में फेंक दिया गया था HoneyPlant.java:20
: यह वही है जिसके बारे में हम ऊपर बात कर रहे थे। आइए main()
डीबग मोड में विधि चलाकर इस रनटाइम अपवाद को देखें। main()
ऐसा करने के लिए, विधि के बगल में IntelliJ IDEA में हरे त्रिकोण तीर पर क्लिक करें । परिणामस्वरूप, हम अपवाद फेंके जाने से ठीक पहले कार्यक्रम को रोक देंगे और हमें यह आइकन दिखाई देगा: सभी उपलब्ध जानकारी प्राप्त करने के लिए, हमें डीबग अनुभाग में देखने की आवश्यकता है। इसमें वेरिएबल्स हैंफलक जो अनुप्रयोग के इस भाग में उपलब्ध सभी चर दिखाता है:
- अमृत \u003d 1.0;
- अमृत क्षमता = -1.0।
if (nectar == 0) {
return 0;
}
लेकिन परेशानी यह है कि हम गलत वेरिएबल की जांच कर रहे हैं। यह कोड में त्रुटि है। फूल में उपलब्ध अमृत की मात्रा (जो अमृत क्षमता चर में संग्रहीत है) की जाँच करने के बजाय, कार्यक्रम विधि के अमृत पैरामीटर के मान की जाँच करता है, जो कि अमृत की मात्रा है जिसे हम फूल से लेना चाहते हैं। यह रहा! हमारा पहला बग! इसे ठीक करने के बाद, हमें निम्न कोड मिलता है:
if (nectarCapacity == 0) {
return 0;
}
अब इस main()
विधि को सामान्य तरीके से चलायें (Run 'Main.main()')
। कोई अपवाद नहीं फेंका गया है, और कार्यक्रम काम करता है: आवेदन पूरा होने तक चलता है और निम्नलिखित उत्तर देता है:
"33.0 honey was produced by 7 bees from 2 honey plants"
## Documentation
Presentation based on honey production.
**Note**: 2 units of nectar = 1 unit of honey
मुख्य विधि में क्रमशः 30 और 40 इकाइयों के अमृत के साथ दो शहद के पौधे हैं। तो हमें अंततः 35 यूनिट शहद के साथ समाप्त होना चाहिए। लेकिन कार्यक्रम बता रहा है कि हमें 33 मिले हैं। अन्य दो इकाइयां कहां गईं? चलो पता करते हैं! ऐसा करने के लिए, लाइन 28 पर विधि में ब्रेकपॉइंट सेट करें Main.main()
, जहां beeHive.populateHoney()
कहा जाता है और main()
डीबग मोड में विधि चलाएं: हम इस बिंदु पर अधिक विस्तार से विचार करेंगे। लाइन 28 को क्रियान्वित करने से पहले कार्यक्रम का निष्पादन बंद हो गया। निचले हिस्से में, हम डिबग सेक्शन देखते हैं, जो चल रहे एप्लिकेशन के बारे में सभी उपलब्ध जानकारी दिखाता है। जैसा कि पहले ही उल्लेख किया गया है, चर फलक में अनुप्रयोग के इस भाग से उपलब्ध सभी चर और वस्तुएँ शामिल हैं। फ़्रेम फलक उन चरणों को दिखाता है जिनसे एप्लिकेशन गुजर रहा है - आप पिछले (फ़्रेम) चरणों को देख सकते हैं और सभी स्थानीय डेटा देख सकते हैं। प्रोग्राम चलाना जारी रखने के लिए, आप F9 या हरे रंग के आइकन को दबा सकते हैं, जैसा कि नीचे दिखाया गया है: प्रोग्राम को रोकने के लिए, लाल वर्ग पर क्लिक करें: डिबग मोड में एप्लिकेशन को पुनरारंभ करने के लिए, तीर पर क्लिक करें: आगे, आप इसके माध्यम से आगे बढ़ सकते हैं दो चाबियों का उपयोग करके चरण दर चरण आवेदन:
- F8 - तरीकों में कदम रखे बिना कोड के माध्यम से कदम उठाएं;
- F7 — स्टेप थ्रू कोड और स्टेप इन मेथड्स।
beeHive.populateHoney()
हमारे मामले में, हमें विधि में कदम रखने के लिए F7 दबाने की जरूरत है । इसमें कदम रखते हुए, हम प्राप्त करते हैं: अब हम इस विधि से कदम उठाने के लिए F8 का उपयोग करेंगे और इसमें क्या होता है इसका वर्णन करेंगे:
- लाइन 25 - स्ट्रीम एपीआई का उपयोग सभी मधुमक्खियों से अमृत एकत्र करने के लिए किया जाता है
- पंक्ति 26 — नव निर्मित शहद को मौजूदा शहद में जोड़ा जाता है;
- पंक्ति 27 - रानी के लिए शहद की 2 इकाइयाँ आवंटित की जाती हैं
- रेखा 28 — शहद की कुल मात्रा में से इन दो इकाइयों को हटा दिया जाता है
- पंक्ति 29- रानी इस शहद को खाती है।
## Documentation
Presentation based on honey production.
**Note**:
* 2 units of nectar = 1 unit of honey
* The queen bee eats 2 units of honey every time when beehive is replenished with honey.
किए गए। हमें मिली सभी गड़बड़ियों को हमने ठीक कर दिया है। हम शांति से एक आत्मसंतुष्ट नज़र के साथ आगे बढ़ सकते हैं, कुछ कॉफी पी सकते हैं, और आइए संक्षेप करते हैं
इस लेख में हमने सीखा:- हर किसी के काम में त्रुटियां होती हैं और डिबगिंग उन्हें ठीक करने का एक शानदार तरीका है
- ब्रेकप्वाइंट क्या होता है और ब्रेकप्वाइंट कितने प्रकार के होते हैं
- अपवाद ब्रेकपॉइंट कैसे सेट करें
- डिबग मोड में कोड के माध्यम से कैसे कदम उठाएं
GO TO FULL VERSION