डिबगिंग कंप्यूटर प्रोग्राम में कोडिंग गलतियों का पता लगाने और उन्हें दूर करने की प्रक्रिया है। सूचना प्रौद्योगिकी और इंजीनियरिंग में, 'बग' शब्द 'त्रुटि' शब्द का पर्याय है। डिबगिंग का लक्ष्य किसी त्रुटि के मूल कारण की पहचान करना और उसे ठीक करना है।
सॉफ़्टवेयर विकास प्रक्रिया में डिबगिंग एक महत्वपूर्ण भूमिका निभाती है और विडंबना यह है कि बग की उपस्थिति को निर्धारित करने और समाप्त करने के लिए परीक्षण में कोड लिखने जितना ही समय लग सकता है। डिबगिंग प्रक्रिया में ही त्रुटि के कारण की पहचान करना और उसे ठीक करना शामिल है। डिबगिंग प्रक्रिया के दौरान, जिसे सॉफ़्टवेयर डिबगिंग टूल के माध्यम से मैन्युअल रूप से या स्वचालित किया जा सकता है, इंजीनियर इसकी तलाश करेंगे:
- सिंटैक्स त्रुटियाँ
- लेखन त्रुटियां
- तर्क में त्रुटियाँ
- कार्यान्वयन त्रुटियाँ
कोड डिबगिंग सॉफ़्टवेयर टूल में विशिष्ट प्रोग्रामिंग भाषाओं के लिए सॉफ़्टवेयर डेवलपमेंट किट (एसडीके) समर्थन, त्रुटि चेतावनी फ़ंक्शन और एक उपयोगकर्ता इंटरफ़ेस (डैशबोर्ड) शामिल है जो डेवलपर्स को विशिष्ट त्रुटियों के बारे में अधिक जानकारी के लिए ड्रिल करने की अनुमति देता है।
डिबगिंग प्रक्रिया में, समस्याओं की पहचान करने और उन्हें ठीक करने के लिए संपूर्ण सॉफ़्टवेयर प्रोग्राम नियमित रूप से संकलित और निष्पादित किए जाते हैं। बड़े सॉफ़्टवेयर प्रोग्राम, जिनमें लाखों स्रोत कोड लाइनें होती हैं, छोटे घटकों में विभाजित होते हैं। दक्षता के लिए, पहले प्रत्येक घटक को अलग से डीबग किया जाता है, उसके बाद संपूर्ण प्रोग्राम को डीबग किया जाता है। सामान्य तौर पर, डिबगिंग के काम करने का तरीका चुनी गई वैश्विक परीक्षण रणनीतियों पर निर्भर करता है।
डिबगिंग रणनीतियाँ
डिबगिंग की रणनीतियों में शामिल हैं:
- बैकट्रैकिंग - बग हंटर उस कथन से शुरू होता है जिस पर एक त्रुटि लक्षण खोजा गया है और वास्तविक त्रुटि के लिए स्रोत कोड का अनुसरण करता है।
- कारण उन्मूलन विधि - सॉफ्टवेयर इंजीनियर त्रुटि के संभावित कारणों की एक सूची बनाता है और विफलता के बिंदु की उत्पत्ति निर्धारित करने के लिए परीक्षण चलाता है।
- प्रोग्राम स्लाइसिंग - गुणवत्ता आश्वासन (क्यूए) परीक्षक विशिष्ट परिस्थितियों में प्रोग्राम (स्लाइस) में प्रोग्राम स्टेटमेंट का एक समूह चलाते हैं।
- शॉटगन डिबगिंग - एक डेवलपर के शिक्षित अनुमानों के आधार पर डिबगिंग के लिए एक परीक्षण-और-त्रुटि, उंगलियों को पार करने वाला दृष्टिकोण।
- रबर डक डिबगिंग - प्रोग्रामर एक छोटे रबर डक या अन्य निर्जीव वस्तु को लाइन-दर-लाइन कोड समझाता है। लक्ष्य लचीली, तार्किक सोच को प्रोत्साहित करना है।
- जोड़ी डिबगिंग - किसी निर्जीव वस्तु को लाइन-दर-लाइन कोड समझाने के बजाय, डेवलपर्स बारी-बारी से एक-दूसरे को लाइन-दर-लाइन कोड समझाते हैं।
डिबगिंग का महत्व
कोड हैंडलिंग और सॉफ्टवेयर विकास के मूलभूत भाग के रूप में डिबगिंग। विशेषज्ञ अक्सर डिबगिंग के बारे में "लोगों, प्रक्रियाओं और प्रणालियों" को शामिल करने के बारे में बात करते हैं जो मौजूदा कोड आधार के साथ किसी भी समस्या को सुलझाने में मदद करेगा।
इसका एक उत्कृष्ट उदाहरण "रिवर्स डिबगिंग" नामक आधुनिक प्रथाओं का उदय है। DevOps और फुर्तीले सॉफ्टवेयर विकास के युग में, रिवर्स डिबगिंग में डिबगिंग की प्रक्रिया को स्वचालित करने के लिए कार्यक्रमों की निगरानी करना और विशेष तरीकों से डेटा वितरित करना शामिल है। यह व्यक्तिगत कंप्यूटर वैज्ञानिकों द्वारा एक ऐसी प्रक्रिया में किया जाता था जो अक्सर एक प्रकार के तकनीकी जासूसी कार्य जैसा होता था।
पुराने दिनों में, प्रोग्रामर परीक्षण के दौरान कुछ कार्यात्मक बग देखने के बाद व्यक्तिगत टिकट दाखिल करते थे, और फिर वापस जाते थे और कोड को मैन्युअल रूप से स्कैन करते थे या अब-आदिम डिबगर्स का उपयोग करते थे ताकि यह पता लगाया जा सके कि क्या हो रहा था। एक अनुभवी टीम के लिए भी कुछ समय के लिए "स्टम्प्ड" होना असामान्य नहीं था, या तो बग बनाने वाले कोड की परिष्कार, या परीक्षण में बग की मायावीता, या दोनों के कारण।
इसके विपरीत, रिवर्स डिबगिंग सिस्टम जो हवाई जहाज में फ्लाइट रिकॉर्डर के डिजाइन से मिलते जुलते हैं, रनटाइम में प्रोग्राम को ट्रैक करते हैं, या अन्यथा डिबगिंग को एक स्वचालित प्रक्रिया बनाने के लिए सही जानकारी देने के लिए प्रोग्राम की निगरानी करते हैं।
वास्तविक समय में या जैसे-जैसे प्रोग्राम का उपयोग किया जाता है, अधिक प्रकार की परिष्कृत निगरानी करने से, रिवर्स डिबगिंग उपकरण उन विवरणों को अधिक पकड़ लेंगे जिनकी कंप्यूटर वैज्ञानिकों को पारंपरिक रूप से मैन्युअल रूप से जांच करनी होती है और डेवलपर्स को यह प्राथमिकता देने में मदद मिलती है कि कौन सी त्रुटियों को पहले संबोधित किया जाना चाहिए।
स्वचालित डिबगिंग
स्वचालित डिबगिंग उपकरण डेवलपर्स को त्रुटियों से निपटने को सरल बनाने और टाइपोग्राफिक त्रुटियों और वाक्यविन्यास या तर्क में गलतियों को ठीक करने में लगने वाले समय को कम करने में मदद कर सकते हैं।
इस प्रकार का गुणवत्ता आश्वासन (क्यूए) उपकरण अपवादों को पकड़ सकता है क्योंकि वे होते हैं और त्रुटि समाधान को आसान बनाने के लिए डेवलपर्स को नैदानिक और प्रासंगिक डेटा प्रदान करते हैं। कुछ स्वचालित डिबगिंग उपकरण हार्ड-कोडित एल्गोरिदम का उपयोग करते हैं जबकि अन्य विभिन्न प्रकार की त्रुटियों और त्रुटि पैटर्न की पहचान करने के लिए मशीन लर्निंग इंजन का उपयोग करते हैं।
जब विकास टीमें निरंतर एकीकरण और निरंतर वितरण (सीआई/सीडी) का उपयोग करती हैं, तो विकास प्रक्रिया के दौरान यूनिट परीक्षणों में या कैनरी परीक्षणों के माध्यम से डिबगिंग स्वचालित रूप से की जा सकती है जो उत्पादन वातावरण में सीमित संख्या में अंतिम उपयोगकर्ताओं के लिए कोड परिवर्तन जारी करती है।
डिबगिंग उपकरण
डाल्विक डिबग मॉनिटर सर्विस (डीडीएमएस) एंड्रॉइड प्लेटफॉर्म में उपयोग किया जाने वाला एक डिबगिंग टूल है। डाल्विक डिबग मॉनिटर सेवा को एंड्रॉइड एसडीके के हिस्से के रूप में डाउनलोड किया गया है। डीडीएमएस द्वारा प्रदान की जाने वाली कुछ सेवाएँ पोर्ट फ़ॉरवर्डिंग, ऑन-डिवाइस स्क्रीन कैप्चर, ऑन-डिवाइस थ्रेड और हीप मॉनिटरिंग और रेडियो स्थिति जानकारी हैं।
डाल्विक डिबग मॉनिटर सेवा डेवलपर्स को एमुलेटर या वास्तविक एंड्रॉइड डिवाइस पर चल रहे एप्लिकेशन में बग ढूंढने की अनुमति देती है। उदाहरण के लिए, डीडीएमएस की लॉगकैट सुविधा का उपयोग करके, डेवलपर्स एप्लिकेशन और डिवाइस की स्थिति के संबंध में लॉग संदेश देख सकते हैं। LogCat उस सटीक लाइन नंबर को इंगित कर सकता है जिस पर त्रुटि हुई है।
एक अन्य डीडीएमएस सुविधा, जिसे एमुलेटर कंट्रोल के रूप में जाना जाता है, डेवलपर्स को फोन की स्थिति और गतिविधियों का अनुकरण करने की अनुमति देता है। उदाहरण के लिए, यह GPRS, EDGE और UTMS जैसे विभिन्न प्रकार के नेटवर्क का अनुकरण कर सकता है, जिसमें गति और विलंबता जैसी विभिन्न नेटवर्क विशेषताएँ हो सकती हैं।
पहले बताई गई सुविधाओं के अलावा, डेल्विक डिबग मॉनिटर सेवा लॉगकैट, प्रक्रिया और रेडियो स्थिति की जानकारी के साथ-साथ इनकमिंग कॉल, एसएमएस और स्थान डेटा स्पूफिंग भी प्रदान करती है। इस डिबगिंग टूल को एडीटी (एंड्रॉइड डेवलपमेंट टूल्स) प्लग-इन जोड़कर एक्लिप्स आईडीई में एकीकृत किया जा सकता है। अन्यथा, इसे कमांड लाइन से एक्सेस किया जा सकता है और यह स्वचालित रूप से किसी भी चल रहे एमुलेटर से कनेक्ट हो जाएगा।
अन्य लोकप्रिय डिबगिंग ऐप्स में शामिल हैं:
Chrome DevTools Google Chrome में निर्मित संलेखन, डिबगिंग और प्रोफ़ाइलिंग टूल का एक सेट है।
फ़्यूज़न रिएक्टर जावा और कोल्डफ़्यूज़न के लिए एक सतत निगरानी और लाइव डिबगिंग टूल है। यह सॉफ्टवेयर इंजीनियरों को लगातार कोड संकलित किए बिना एपीआई कॉल और कोड की छोटी इकाइयों को क्रॉस-रेफरेंस करने की अनुमति देता है।
जीडीबी (जीएनयू डिबगर) कमांड लाइन में चलता है और इसका उपयोग सी, सी++, फोरट्रान और मोडुला-ए में लिखे गए प्रोग्रामों को डीबग करने के लिए किया जा सकता है।
इंटरएक्टिव डिस्सेबलर (आईडीए) सॉफ्टवेयर इंजीनियरों को इंजीनियर मशीन-निष्पादन योग्य कोड को वापस असेंबली भाषा में रिवर्स करने की अनुमति देता है।
लाइटरन एक सर्वर-साइड डिबगर है जो डेवलपर्स को माइक्रोसर्विसेज, कुबेरनेट्स, डॉकर स्वार्म्स और अमेज़ॅन वेब सर्विसेज के खिलाफ परीक्षण और डायग्नोस्टिक्स चलाने की सुविधा देता है।
0 Comments