कोडजिम समुदायातील सर्वांना नमस्कार! आज डीबगिंगबद्दल बोलूया — ते काय आहे आणि IntelliJ IDEA मध्ये डीबग कसे करायचे. हा लेख अशा लोकांसाठी आहे ज्यांना आधीपासून Java Core चे किमान ज्ञान आहे. लायब्ररी प्रकाशित करण्यासाठी कोणतीही फ्रेमवर्क किंवा गुंतागुंतीची प्रक्रिया असणार नाही. एक निवांत फेरफटका. म्हणून स्वतःला आरामदायक बनवा आणि चला प्रारंभ करूया!
च्या निम्म्या इतके असावे. गोळा केलेले अमृत. प्रकल्पात खालील वर्ग आहेत:
दस्तऐवजीकरणानुसार , अमृत 2 ते 1 च्या गुणोत्तराने मधात रूपांतरित केले जाते:
README फाइलमध्ये एक त्रुटी आहे आणि ती अपडेट करणे आवश्यक आहे. चला README फाईल अपडेट करूया:
स्टॅक ओव्हरफ्लो कोडजिमवरील लेख वाचू शकतो :)
तुम्हाला डीबग मोडची आवश्यकता का आहे
चला ताबडतोब स्वतःसाठी काहीतरी स्पष्ट करूया: बगशिवाय कोणताही कोड नाही... जीवन हे असेच कार्य करते. त्यामुळे, जर आमचा कोड आमच्या अपेक्षेप्रमाणे काम करत नसेल तर आम्ही तुकडे पडू नये आणि हार मानू नये. पण आपण काय करावे? ठीक आहे, आम्हीSystem.out.println
सर्वत्र विधाने ठेवू शकतो आणि नंतर त्रुटी शोधण्याच्या आशेने कन्सोल आउटपुटद्वारे कंगवा करू शकतो. ते म्हणाले, तुम्ही काळजीपूर्वक लॉगिंग वापरून डीबग करू शकता (आणि लोक करू शकता). परंतु तुम्ही तुमचा कोड स्थानिक मशीनवर चालवू शकत असल्यास, डीबग मोड वापरणे चांगले आहे. मला लगेच लक्षात घ्यायचे आहे की या लेखात आम्ही IntelliJ IDEA वापरून प्रोजेक्ट डीबग करण्याचा विचार करू.
डीबग मोड म्हणजे काय?
डीबग मोड डीबगिंग (तपासणी) चालू कोडसाठी आहे. नियुक्त केलेल्या ठिकाणी अंमलबजावणी थांबवणे आणि गोष्टी कशा प्रगती करत आहेत हे पाहणे तुम्हाला शक्य करते. हे तुम्हाला कोडमधील विशिष्ट ठिकाणी प्रोग्रामची स्थिती समजू देते. हे घड्याळ थांबवून बाजूने सर्वकाही पाहण्यासारखे आहे. छान, बरोबर? आमचे उद्दिष्ट आमच्या प्रिय IntelliJ IDEA डेव्हलपमेंट वातावरणाचा वापर करून ऍप्लिकेशन्स कसे डीबग करायचे ते जलद आणि सहज शिकणे हा आहे.डीबगिंग सुरू करण्यासाठी आपल्याला काय आवश्यक आहे
येथे काही विनामूल्य सल्ला आहे: हा लेख वाचत असताना, येथे वर्णन केलेल्या सर्व गोष्टी करा — तुमच्याकडे सर्व काही आहे ज्याचे अनुसरण करा. तुम्हाला काय हवे आहे:- IntelliJ IDEA आवृत्ती 2019.3.1 किंवा उच्च. जर कोणाकडे हे नसेल तर, येथे एक लिंक आहे जिथे तुम्ही ते डाउनलोड करू शकता . समुदाय संस्करण डाउनलोड करा — हीच आवृत्ती आहे जी मी वापरेन.
- हा GitHub प्रकल्प क्लोन करा आणि IDEA द्वारे आयात करा.
थोडं थिअरी... मी वचन देतो :D
थोडेसे डीबगिंग सुरू करण्यासाठी, तुम्हाला ब्रेकपॉइंट काय आहे हे समजून घेणे आणि काही हॉट की सह परिचित असणे आवश्यक आहे. ब्रेकपॉईंट हा एक विशेष मार्कर आहे जो तुम्हाला अॅप्लिकेशनची अंमलबजावणी कुठे थांबवायची आहे हे सूचित करतो, शक्यतो अॅप्लिकेशनच्या स्थितीवर आधारित . तुम्ही डाव्या बाजूच्या पॅनेलवर डावे-क्लिक करून किंवा कोड स्थानावर क्लिक करून आणि Ctrl+F8 दाबून ब्रेकपॉइंट सेट करू शकता . चला तीन प्रकारचे ब्रेकपॉइंट्स पाहू: लाइन ब्रेकपॉइंट्स, फील्ड वॉचपॉइंट्स आणि आणि पद्धत ब्रेकपॉइंट्स. हे असे दिसते:-
एका ओळीवर:
जर एखाद्या विधानात लॅम्बडा अभिव्यक्ती असेल, तर IDEA तुम्हाला संपूर्ण विधानावर ब्रेकपॉइंट ठेवायचा की विशेषत: लॅम्बडा अभिव्यक्तीवर निवडण्यास सूचित करते:
-
पद्धतीनुसार:
-
वर्गावर:
- Bee.java:24 — 24 व्या ओळीवर मधमाशी वर्गात
- Main.java:14 — 14 व्या ओळीवरील मुख्य वर्गात
चला डीबगिंग नावाची ही गोष्ट करूया!
मी कौटुंबिक मधमाश्या पाळणार्यांच्या मोठ्या रांगेतून आलो आहे, म्हणून मी डीबगिंगचे उदाहरण देण्यासाठी तयार केलेला प्रकल्प मधमाशांच्या मधमाशांच्या अमृत गोळा करणे, मधामध्ये अमृत प्रक्रिया करणे आणि नंतर मधमाशातून मध मिळवणे या प्रक्रियेचे वर्णन करतो. प्रकल्पाच्या मूळ निर्देशिकेत आढळणाऱ्या README फाईलच्या दस्तऐवजीकरणानुसार, ज्या फुलांमधून अमृत गोळा केले जाते त्या सर्व फुलांचे अपेक्षित वर्तन गोळा केलेल्या मधाचे प्रमाण (जे दुप्पट रूप धारण करते )- मधमाशी - एक सामान्य कामगार मधमाशी
- बीक्वीन - राणी मधमाशी
- मधमाश्या - मधमाश्या
- हनीप्लांट - एक मध वनस्पती (अमृत स्त्रोत) ज्यामधून अमृत गोळा केले जाते
- मुख्य - येथेच आपल्याला आढळते
public static void main()
, जिथे अंमलबजावणी सुरू होते.
main()
पद्धत चालवली, तर आपल्याला असे आढळून येते की आपला कार्यक्रम केवळ मधाचे प्रमाण मोजत नाही, तर त्याला अपवाद देखील आहे... समस्या काय आहे हे आपण तपासणे आणि निर्धारित करणे आवश्यक आहे. खालच्या उजव्या कोपर्यात असलेल्या ट्रेस स्टॅकवरून, आपण पाहू शकतो की RuntimeException येथे फेकले गेले होते HoneyPlant.java:20
: आम्ही वर बोलत होतो तेच आहे. main()
डीबग मोडमध्ये पद्धत चालवून या RuntimeException साठी पाहू . हे करण्यासाठी, main()
पद्धतीच्या पुढील IntelliJ IDEA मधील हिरव्या त्रिकोण बाणावर क्लिक करा. परिणामस्वरुप, अपवाद टाकण्याआधीच आम्हाला प्रोग्रॅम थांबवण्यात येईल आणि आम्हाला हा आयकॉन दिसेल: सर्व उपलब्ध माहिती मिळवण्यासाठी, आम्हाला डीबग विभागात पाहण्याची आवश्यकता आहे. त्यात व्हेरिएबल्स आहेतउपखंड जे अनुप्रयोगाच्या या भागात उपलब्ध असलेले सर्व चल दाखवते:
- अमृत = 1.0;
- अमृत क्षमता = -1.0.
if (nectar == 0) {
return 0;
}
पण अडचण अशी आहे की आम्ही चुकीचे व्हेरिएबल तपासत आहोत. ही कोडमधील त्रुटी आहे. फ्लॉवरमध्ये उपलब्ध अमृताचे प्रमाण तपासण्याऐवजी (जे nectarCapacity व्हेरिएबलमध्ये साठवले जाते), प्रोग्राम पद्धतीच्या अमृत पॅरामीटरचे मूल्य तपासतो, जे आपल्याला फुलातून घ्यायचे आहे ते अमृताचे प्रमाण आहे. हे आहे! आमचा पहिला बग! याचे निराकरण केल्यानंतर, आम्हाला खालील कोड मिळेल:
if (nectarCapacity == 0) {
return 0;
}
आता main()
पद्धत सामान्य पद्धतीने चालवा (Run 'Main.main()')
. फेकून दिलेला कोणताही अपवाद नाही आणि प्रोग्राम कार्य करतो: अनुप्रयोग पूर्ण होईपर्यंत चालतो आणि खालील उत्तर देतो:
"33.0 honey was produced by 7 bees from 2 honey plants"
आता सर्व काही ठीक होईल, परंतु हे उत्तर चुकीचे आहे... README फाईलच्या
## Documentation
Presentation based on honey production.
**Note**: 2 units of nectar = 1 unit of honey
मुख्य पद्धतीमध्ये अनुक्रमे 30 आणि 40 युनिट्स अमृत असलेली दोन मध रोपे आहेत. त्यामुळे आपण शेवटी 35 युनिट्स मध मिळवला पाहिजे. पण कार्यक्रम सांगतो की आम्हाला ३३ मिळाले. इतर दोन युनिट्स कुठे गेली? आपण शोधून काढू या! Main.main()
हे करण्यासाठी, 28 ओळीवरील पद्धतीमध्ये ब्रेकपॉईंट सेट करा , जिथे beeHive.populateHoney()
कॉल केला जातो आणि main()
डीबग मोडमध्ये पद्धत चालवा: आम्ही या मुद्द्यावर अधिक तपशीलवार विचार करू. 28 ओळ कार्यान्वित करण्यापूर्वी प्रोग्रामने कार्यान्वित करणे थांबवले. खालच्या भागात, आम्ही डीबग विभाग पाहतो, जो चालू असलेल्या अनुप्रयोगाबद्दल सर्व उपलब्ध माहिती दर्शवितो. आधीच नमूद केल्याप्रमाणे, व्हेरिएबल्स पेनमध्ये ऍप्लिकेशनच्या या भागातून उपलब्ध सर्व व्हेरिएबल्स आणि ऑब्जेक्ट्स आहेत. फ्रेम्स उपखंड अनुप्रयोग ज्या चरणांमधून जात आहे ते दर्शविते — तुम्ही मागील (फ्रेम) चरण पाहू शकता आणि सर्व स्थानिक डेटा पाहू शकता. प्रोग्राम चालू ठेवण्यासाठी, तुम्ही खाली दाखवल्याप्रमाणे F9 किंवा हिरवा आयकॉन दाबू शकता: प्रोग्राम थांबवण्यासाठी, लाल स्क्वेअरवर क्लिक करा: डीबग मोडमध्ये अॅप्लिकेशन रीस्टार्ट करण्यासाठी, बाणावर क्लिक करा: पुढे, तुम्ही पुढे जाऊ शकता. दोन की वापरून चरण-दर-चरण अनुप्रयोग:
- F8 - पद्धतींमध्ये न जाता कोडमधून पाऊल टाका;
- F7 - कोड द्वारे चरण आणि पद्धतींमध्ये पाऊल.
beeHive.populateHoney()
. त्यात पाऊल टाकल्यावर, आम्हाला मिळते: आता आम्ही या पद्धतीतून पाऊल टाकण्यासाठी F8 वापरू आणि त्यात काय घडते याचे वर्णन करू:
- ओळ 25 — प्रवाह API सर्व मधमाशांकडून अमृत गोळा करण्यासाठी वापरला जातो
- ओळ 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