CodeGym /Java Blog /यादृच्छिक /IntelliJ IDEA मध्ये डीबगिंग: एक नवशिक्या मार्गदर्शक
John Squirrels
पातळी 41
San Francisco

IntelliJ IDEA मध्ये डीबगिंग: एक नवशिक्या मार्गदर्शक

यादृच्छिक या ग्रुपमध्ये प्रकाशित केले
कोडजिम समुदायातील सर्वांना नमस्कार! आज डीबगिंगबद्दल बोलूया — ते काय आहे आणि IntelliJ IDEA मध्ये डीबग कसे करायचे. हा लेख अशा लोकांसाठी आहे ज्यांना आधीपासून Java Core चे किमान ज्ञान आहे. लायब्ररी प्रकाशित करण्यासाठी कोणतीही फ्रेमवर्क किंवा गुंतागुंतीची प्रक्रिया असणार नाही. एक निवांत फेरफटका. म्हणून स्वतःला आरामदायक बनवा आणि चला प्रारंभ करूया! IntelliJ IDEA मध्ये डीबगिंग: एक नवशिक्या मार्गदर्शक - 1

तुम्हाला डीबग मोडची आवश्यकता का आहे

चला ताबडतोब स्वतःसाठी काहीतरी स्पष्ट करूया: बगशिवाय कोणताही कोड नाही... जीवन हे असेच कार्य करते. त्यामुळे, जर आमचा कोड आमच्या अपेक्षेप्रमाणे काम करत नसेल तर आम्ही तुकडे पडू नये आणि हार मानू नये. पण आपण काय करावे? ठीक आहे, आम्ही System.out.printlnसर्वत्र विधाने ठेवू शकतो आणि नंतर त्रुटी शोधण्याच्या आशेने कन्सोल आउटपुटद्वारे कंगवा करू शकतो. ते म्हणाले, तुम्ही काळजीपूर्वक लॉगिंग वापरून डीबग करू शकता (आणि लोक करू शकता). परंतु तुम्ही तुमचा कोड स्थानिक मशीनवर चालवू शकत असल्यास, डीबग मोड वापरणे चांगले आहे. मला लगेच लक्षात घ्यायचे आहे की या लेखात आम्ही IntelliJ IDEA वापरून प्रोजेक्ट डीबग करण्याचा विचार करू.

डीबग मोड म्हणजे काय?

डीबग मोड डीबगिंग (तपासणी) चालू कोडसाठी आहे. नियुक्त केलेल्या ठिकाणी अंमलबजावणी थांबवणे आणि गोष्टी कशा प्रगती करत आहेत हे पाहणे तुम्हाला शक्य करते. हे तुम्हाला कोडमधील विशिष्ट ठिकाणी प्रोग्रामची स्थिती समजू देते. हे घड्याळ थांबवून बाजूने सर्वकाही पाहण्यासारखे आहे. छान, बरोबर? आमचे उद्दिष्ट आमच्या प्रिय IntelliJ IDEA डेव्हलपमेंट वातावरणाचा वापर करून ऍप्लिकेशन्स कसे डीबग करायचे ते जलद आणि सहज शिकणे हा आहे.

डीबगिंग सुरू करण्यासाठी आपल्याला काय आवश्यक आहे

येथे काही विनामूल्य सल्ला आहे: हा लेख वाचत असताना, येथे वर्णन केलेल्या सर्व गोष्टी करा — तुमच्याकडे सर्व काही आहे ज्याचे अनुसरण करा. तुम्हाला काय हवे आहे:
  1. IntelliJ IDEA आवृत्ती 2019.3.1 किंवा उच्च. जर कोणाकडे हे नसेल तर, येथे एक लिंक आहे जिथे तुम्ही ते डाउनलोड करू शकता . समुदाय संस्करण डाउनलोड करा — हीच आवृत्ती आहे जी मी वापरेन.
  2. हा GitHub प्रकल्प क्लोन करा आणि IDEA द्वारे आयात करा.
IDEA उघडा: डीबग-प्रेझेंटेशनIntelliJ IDEA मध्ये डीबगिंग: एक नवशिक्या मार्गदर्शक - 2 प्रोजेक्ट निवडा आणि ओके दाबा . नंतर तुम्हाला खालील विंडो दिसेल: निवडलेले पर्याय सोडा: बाह्य स्त्रोतांकडून प्रकल्प आयात करा आणि Maven . समाप्त क्लिक करा . आता आम्ही प्रकल्प आयात केला आहे, आम्ही उर्वरित प्रक्रियेचे जिवंत उदाहरणासह वर्णन करू शकतो. IntelliJ IDEA मध्ये डीबगिंग: एक नवशिक्या मार्गदर्शक - 3

थोडं थिअरी... मी वचन देतो :D

थोडेसे डीबगिंग सुरू करण्यासाठी, तुम्हाला ब्रेकपॉइंट काय आहे हे समजून घेणे आणि काही हॉट की सह परिचित असणे आवश्यक आहे. ब्रेकपॉईंट हा एक विशेष मार्कर आहे जो तुम्हाला अॅप्लिकेशनची अंमलबजावणी कुठे थांबवायची आहे हे सूचित करतो, शक्यतो अॅप्लिकेशनच्या स्थितीवर आधारित . तुम्ही डाव्या बाजूच्या पॅनेलवर डावे-क्लिक करून किंवा कोड स्थानावर क्लिक करून आणि Ctrl+F8 दाबून ब्रेकपॉइंट सेट करू शकता . चला तीन प्रकारचे ब्रेकपॉइंट्स पाहू: लाइन ब्रेकपॉइंट्स, फील्ड वॉचपॉइंट्स आणि आणि पद्धत ब्रेकपॉइंट्स. हे असे दिसते:
  • एका ओळीवर:

    IntelliJ IDEA मध्ये डीबगिंग: एक नवशिक्या मार्गदर्शक - 4

    जर एखाद्या विधानात लॅम्बडा अभिव्यक्ती असेल, तर IDEA तुम्हाला संपूर्ण विधानावर ब्रेकपॉइंट ठेवायचा की विशेषत: लॅम्बडा अभिव्यक्तीवर निवडण्यास सूचित करते:

    IntelliJ IDEA मध्ये डीबगिंग: एक नवशिक्या मार्गदर्शक - 5
  • पद्धतीनुसार:

    IntelliJ IDEA मध्ये डीबगिंग: एक नवशिक्या मार्गदर्शक - 6
  • वर्गावर:

    IntelliJ IDEA मध्ये डीबगिंग: एक नवशिक्या मार्गदर्शक - 7
ब्रेकपॉइंट्स जोडण्यासाठी वापरल्या जाणार्‍या समान चरणांचे अनुसरण करून काढले जाऊ शकतात. अशी परिस्थिती असते जेव्हा तुम्ही त्यांना निष्क्रिय (म्यूट) करू इच्छित असाल. हे करण्यासाठी, IntelliJ IDEA मध्ये डीबगिंग: एक नवशिक्या मार्गदर्शक - 8डीबग विभागात चिन्ह शोधा. हे सर्व ब्रेकपॉइंट्स निःशब्द करेल. कोणते ब्रेकपॉइंट सेट केले आहेत हे पाहण्यासाठी, तुम्ही एकतर खालच्या डाव्या कोपऱ्यातील डीबग विभागात जाऊन आयकॉन शोधू शकता IntelliJ IDEA मध्ये डीबगिंग: एक नवशिक्या मार्गदर्शक - 9किंवा Ctrl+Shift+F8 दाबा : IntelliJ IDEA मध्ये डीबगिंग: एक नवशिक्या मार्गदर्शक - 10ब्रेकपॉईंट्सच्या सूचीकडे जाताना, आम्ही पुढील गोष्टी पाहू: IntelliJ IDEA मध्ये डीबगिंग: एक नवशिक्या मार्गदर्शक - 11दोन ब्रेकपॉइंट्स आहेत. येथे:
  • Bee.java:24 — 24 व्या ओळीवर मधमाशी वर्गात
  • Main.java:14 — 14 व्या ओळीवरील मुख्य वर्गात
कृपया लक्षात घ्या की जर तुम्ही प्रोजेक्ट क्लोन केला असेल तर हे ब्रेकपॉइंट्स आपोआप सेट केले जाणार नाहीत: तुम्हाला ते स्वतः सेट करावे लागतील! जावा अपवाद ब्रेकपॉईंट विभाग देखील आहे . ते खूप उपयुक्त आहे. येथे तुम्ही अंतर्निहित ब्रेकपॉइंट जोडू शकता जेणेकरून कोणताही अपवाद किंवा विशिष्ट अपवाद फेकण्यापूर्वी प्रोग्राम थांबेल. आम्ही RuntimeException साठी एक अस्पष्ट ब्रेकपॉइंट जोडू. हे करणे सोपे आहे. वरच्या डाव्या कोपर्यात "+" चिन्ह शोधा. त्यावर क्लिक करा आणि Java अपवाद ब्रेकपॉइंट्स निवडा : IntelliJ IDEA मध्ये डीबगिंग: एक नवशिक्या मार्गदर्शक - 12दिसत असलेल्या विंडोमध्ये, तुम्हाला जो अपवाद जोडायचा आहे त्याचे नाव लिहा, सूचीमधून निवडा आणि OK वर क्लिक करा : IntelliJ IDEA मध्ये डीबगिंग: एक नवशिक्या मार्गदर्शक - 13ते आमचे प्राइमर कसे सेट करायचे ते पूर्ण करते, म्हणून आता आम्ही' काही सराव पुढे जाईल.

चला डीबगिंग नावाची ही गोष्ट करूया!

मी कौटुंबिक मधमाश्या पाळणार्‍यांच्या मोठ्या रांगेतून आलो आहे, म्हणून मी डीबगिंगचे उदाहरण देण्यासाठी तयार केलेला प्रकल्प मधमाशांच्या मधमाशांच्या अमृत गोळा करणे, मधामध्ये अमृत प्रक्रिया करणे आणि नंतर मधमाशातून मध मिळवणे या प्रक्रियेचे वर्णन करतो. प्रकल्पाच्या मूळ निर्देशिकेत आढळणाऱ्या README फाईलच्या दस्तऐवजीकरणानुसार, ज्या फुलांमधून अमृत गोळा केले जाते त्या सर्व फुलांचे अपेक्षित वर्तन गोळा केलेल्या मधाचे प्रमाण (जे दुप्पट रूप धारण करते ) च्या निम्म्या इतके असावे. गोळा केलेले अमृत. प्रकल्पात खालील वर्ग आहेत:
  • मधमाशी - एक सामान्य कामगार मधमाशी
  • बीक्वीन - राणी मधमाशी
  • मधमाश्या - मधमाश्या
  • हनीप्लांट - एक मध वनस्पती (अमृत स्त्रोत) ज्यामधून अमृत गोळा केले जाते
  • मुख्य - येथेच आपल्याला आढळते public static void main(), जिथे अंमलबजावणी सुरू होते.
जर आपण ही main()पद्धत चालवली, तर आपल्याला असे आढळून येते की आपला कार्यक्रम केवळ मधाचे प्रमाण मोजत नाही, तर त्याला अपवाद देखील आहे... IntelliJ IDEA मध्ये डीबगिंग: एक नवशिक्या मार्गदर्शक - 14समस्या काय आहे हे आपण तपासणे आणि निर्धारित करणे आवश्यक आहे. खालच्या उजव्या कोपर्यात असलेल्या ट्रेस स्टॅकवरून, आपण पाहू शकतो की RuntimeException येथे फेकले गेले होते HoneyPlant.java:20: IntelliJ IDEA मध्ये डीबगिंग: एक नवशिक्या मार्गदर्शक - 15आम्ही वर बोलत होतो तेच आहे. main()डीबग मोडमध्ये पद्धत चालवून या RuntimeException साठी पाहू . हे करण्यासाठी, main()पद्धतीच्या पुढील IntelliJ IDEA मधील हिरव्या त्रिकोण बाणावर क्लिक करा. IntelliJ IDEA मध्ये डीबगिंग: एक नवशिक्या मार्गदर्शक - 16परिणामस्वरुप, अपवाद टाकण्याआधीच आम्‍हाला प्रोग्रॅम थांबवण्‍यात येईल आणि आम्‍हाला हा आयकॉन दिसेल: IntelliJ IDEA मध्ये डीबगिंग: एक नवशिक्या मार्गदर्शक - 17IntelliJ IDEA मध्ये डीबगिंग: एक नवशिक्या मार्गदर्शक - 18सर्व उपलब्‍ध माहिती मिळवण्‍यासाठी, आम्‍हाला डीबग विभागात पाहण्‍याची आवश्‍यकता आहे. त्यात व्हेरिएबल्स आहेतउपखंड जे अनुप्रयोगाच्या या भागात उपलब्ध असलेले सर्व चल दाखवते:
  • अमृत ​​= 1.0;
  • अमृत ​​क्षमता = -1.0.
अपवाद फेकण्यात अर्थ आहे, कारण मधाच्या रोपामध्ये अमृताची नकारात्मक मात्रा असू शकत नाही. पण हे का होत आहे? शेवटी, 15-17 ओळींमध्ये, आम्ही अमृत पुरवठा संपला आहे की नाही ते तपासतो आणि जर ते शून्य असेल तर:

	if (nectar == 0) {
   	     return 0;
}
पण अडचण अशी आहे की आम्ही चुकीचे व्हेरिएबल तपासत आहोत. ही कोडमधील त्रुटी आहे. फ्लॉवरमध्ये उपलब्ध अमृताचे प्रमाण तपासण्याऐवजी (जे nectarCapacity व्हेरिएबलमध्ये साठवले जाते), प्रोग्राम पद्धतीच्या अमृत पॅरामीटरचे मूल्य तपासतो, जे आपल्याला फुलातून घ्यायचे आहे ते अमृताचे प्रमाण आहे. हे आहे! आमचा पहिला बग! याचे निराकरण केल्यानंतर, आम्हाला खालील कोड मिळेल:

	if (nectarCapacity == 0) {
   	     return 0;
}
आता main()पद्धत सामान्य पद्धतीने चालवा (Run 'Main.main()'). फेकून दिलेला कोणताही अपवाद नाही आणि प्रोग्राम कार्य करतो: IntelliJ IDEA मध्ये डीबगिंग: एक नवशिक्या मार्गदर्शक - 19अनुप्रयोग पूर्ण होईपर्यंत चालतो आणि खालील उत्तर देतो:

"33.0 honey was produced by 7 bees from 2 honey plants"
आता सर्व काही ठीक होईल, परंतु हे उत्तर चुकीचे आहे... README फाईलच्या दस्तऐवजीकरणानुसार , अमृत 2 ते 1 च्या गुणोत्तराने मधात रूपांतरित केले जाते:

## Documentation
Presentation based on honey production.

**Note**: 2 units of nectar = 1 unit of honey
मुख्य पद्धतीमध्ये अनुक्रमे 30 आणि 40 युनिट्स अमृत असलेली दोन मध रोपे आहेत. त्यामुळे आपण शेवटी 35 युनिट्स मध मिळवला पाहिजे. पण कार्यक्रम सांगतो की आम्हाला ३३ मिळाले. इतर दोन युनिट्स कुठे गेली? आपण शोधून काढू या! Main.main()हे करण्यासाठी, 28 ओळीवरील पद्धतीमध्ये ब्रेकपॉईंट सेट करा , जिथे beeHive.populateHoney()कॉल केला जातो आणि main()डीबग मोडमध्ये पद्धत चालवा: IntelliJ IDEA मध्ये डीबगिंग: एक नवशिक्या मार्गदर्शक - 20आम्ही या मुद्द्यावर अधिक तपशीलवार विचार करू. 28 ओळ कार्यान्वित करण्यापूर्वी प्रोग्रामने कार्यान्वित करणे थांबवले. खालच्या भागात, आम्ही डीबग विभाग पाहतो, जो चालू असलेल्या अनुप्रयोगाबद्दल सर्व उपलब्ध माहिती दर्शवितो. आधीच नमूद केल्याप्रमाणे, व्हेरिएबल्स पेनमध्ये ऍप्लिकेशनच्या या भागातून उपलब्ध सर्व व्हेरिएबल्स आणि ऑब्जेक्ट्स आहेत. फ्रेम्स उपखंड अनुप्रयोग ज्या चरणांमधून जात आहे ते दर्शविते — तुम्ही मागील (फ्रेम) चरण पाहू शकता आणि सर्व स्थानिक डेटा पाहू शकता. प्रोग्राम चालू ठेवण्यासाठी, तुम्ही खाली दाखवल्याप्रमाणे F9IntelliJ IDEA मध्ये डीबगिंग: एक नवशिक्या मार्गदर्शक - 21 किंवा हिरवा आयकॉन दाबू शकता: प्रोग्राम थांबवण्यासाठी, लाल स्क्वेअरवर क्लिक करा: IntelliJ IDEA मध्ये डीबगिंग: एक नवशिक्या मार्गदर्शक - 22डीबग मोडमध्ये अॅप्लिकेशन रीस्टार्ट करण्यासाठी, बाणावर क्लिक करा: IntelliJ IDEA मध्ये डीबगिंग: एक नवशिक्या मार्गदर्शक - 23पुढे, तुम्ही पुढे जाऊ शकता. दोन की वापरून चरण-दर-चरण अनुप्रयोग:
  • F8 - पद्धतींमध्ये न जाता कोडमधून पाऊल टाका;
  • F7 - कोड द्वारे चरण आणि पद्धतींमध्ये पाऊल.
आमच्या बाबतीत, पद्धतीमध्ये पाऊल टाकण्यासाठी आम्हाला F7 दाबावे लागेल beeHive.populateHoney(). त्यात पाऊल टाकल्यावर, आम्हाला मिळते: आता आम्ही या पद्धतीतून पाऊल टाकण्यासाठी F8IntelliJ IDEA मध्ये डीबगिंग: एक नवशिक्या मार्गदर्शक - 24 वापरू आणि त्यात काय घडते याचे वर्णन करू:
  • ओळ 25 — प्रवाह API सर्व मधमाशांकडून अमृत गोळा करण्यासाठी वापरला जातो
  • ओळ 26 - नवीन तयार केलेला मध सध्याच्या मधात जोडला जातो;
  • ओळ 27 - राणीसाठी 2 युनिट मध वाटप केले जातात
  • ओळ 28 - या दोन युनिट्स मधाच्या एकूण प्रमाणात काढल्या जातात
  • ओळ 29 - राणी हा मध खाते.
त्यामुळे दोन बेपत्ता युनिट कुठे गेले! हुर्रे! व्यवसाय विश्लेषकाशी बोलल्यानंतर, आम्ही असा निष्कर्ष काढतो की README फाइलमध्ये एक त्रुटी आहे आणि ती अपडेट करणे आवश्यक आहे. चला README फाईल अपडेट करूया:

## 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.
आम्ही पूर्ण केले. आम्हाला आढळलेल्या सर्व बगचे आम्ही निराकरण केले आहे. आम्ही शांतपणे स्मग लुक घेऊन पुढे जाऊ शकतो, कॉफी पिऊ शकतो आणि स्टॅक ओव्हरफ्लो कोडजिमवरील लेख वाचू शकतो :)

चला सारांश द्या

या लेखात, आम्ही शिकलो:
  • प्रत्येकाच्या कामात त्रुटी आहेत आणि त्या दुरुस्त करण्याचा एक चांगला मार्ग डीबगिंग आहे
  • ब्रेकपॉइंट म्हणजे काय आणि कोणत्या प्रकारचे ब्रेकपॉइंट आहेत
  • अपवाद ब्रेकपॉइंट कसा सेट करायचा
  • डीबग मोडमध्ये कोडद्वारे कसे स्टेप करावे

वाचण्यासाठी लेख

टिप्पण्या
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION