What is Debugging in Programming Language and Why is it important?

किसी error के मुख्य कारण को identify करके उसे correct करने के process को debugging कहा जाता है। इसका उपयोग program के testing के समय error को correct करने के लिए किया जाता है।

इन्ही गलतीयों को ढुंढने और उसे समाप्त करने को debugging कहते हैं। सामान्यतः runtime error को ढूंढकर समाप्त करने की आवश्यकता होती है क्योंकि यही error होता है जो program को crashed कर देता है।

Defination of Debugging :

सॉफ्टवेयर इंजीनियरिंग के अंतर्गत, Debugging software में बग(BUG) को ठीक करने की प्रक्रिया है। दूसरे शब्दों में कह सकते हैं, यह Errors की पहचान, विश्लेषण और उन्हें दूर करने के लिए संदर्भित करता है।

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

Art of debugging:

जब हम किसी computer language में programming करते हैं तो उसमें अलग-अलग प्रकार के गलतियाँ हो सकती है। इन गलतियों को निम्न तीन प्रकारों में बाँटा जा सकता है:

  1. Syntax error
  2. Execution error
  3. Logical error

1) Syntax error:

यह error तक produce होता है जब programmer (user) के द्वारा enter किए गए code को compiler समझ नहीं पाता। इस प्रकार का error, किसी comma, semicolon या bracket इत्यादि के छूट जाने या misplaced होने के कारण प्रदर्शित होता है।

जब इस प्राकर की error, compiler के द्वारा प्राप्त होता है तब एक error message को प्रदर्शित करता है जिसे correct करना आसान होता है कई बार इस प्रकार के error spelling mistake के कारण भी होता है:

Example:

true while printf a=a+5 Syntax Error wile prinf a=a+5; 

2) Execution error:

जब program के execution के दौरान वह अपने main method अपने अंतिम line को execute नहीं हो पाता और वह बीच में ही terminate हो जाता है तो ऐसी परिस्थिति में जो error होता है उसे execution error कहते हैं। इस प्रकार के error,error free compilation के बाद procedure होता है। Execution error के निम्न कारण होते हैं:

  • अनंत लुप ।
  • चुने हुऐ डाटा पर ही सही उत्तर का प्राप्त होना ।
  • गलत डाटा या गलत संदेश।

3) Logical error:

Logical error किसी programmer के द्वारा किसी program की coding करते समय किए जाने वाले mistake के कारण उत्पन्न होता है। Computer इस प्रकार के error को detect नहीं करता है। इसलिये इस प्रकार के error को search करना सबसे कठिन कार्य होता है। निम्न उदाहरण से आप logical error को समझ सकते हैं:

net salary = basic salary + allowances deduction

इसके बदले यदि

net salary = basic salary allowances + deduction लिखा जाये तो इस statement के द्वारा wrong result ही print किया जा सकेगा और इसे run करते समय detect नहीं किया जा सकता। इस प्रकार के error को dry run के द्वारा detect किया जा सकता है।

Read Also TESTING STRATEGIES AND VALIDATION TESTING IN SOFTWARE ENGINEERING IN HINDI

Steps involved in Debugging

डिबगिंग की प्रक्रिया निम्न स्टेप्स में किया जाता है - 

steps involved in debugging

1. Identify the errors: 

किसी त्रुटि की खराब पहचान से विकासशील समय बर्बाद हो सकता है। यह सामान्य है कि उपयोगकर्ताओं द्वारा रिपोर्ट की गई उत्पादन त्रुटियों की व्याख्या करना कठिन होता है और कभी-कभी हमें प्राप्त होने वाली जानकारी भ्रामक होती है। यह वास्तविक त्रुटि की पहचान करने के लिए आयात है।

2. Find the Error Location: 

Error की सही पहचान करने के बाद, आपको सटीक स्थान खोजने के लिए कोड के माध्यम से जाना होगा जहां त्रुटि स्थित है। इस चरण में, आपको इसे समझने के बजाय त्रुटि खोजने पर ध्यान देने की आवश्यकता है।

3. Analyze the Error: 

तीसरे step में, आपको error स्थान से Bottom-Up दृष्टिकोण का उपयोग करने और कोड का विश्लेषण करने की आवश्यकता है। यह आपको error को समझने में मदद करता है। Bug का विश्लेषण करने के दो मुख्य लक्ष्य होते हैं, जैसे कि अन्य त्रुटियों के लिए त्रुटि की जाँच करना, और फिक्स में किसी भी संपार्श्विक क्षति को दर्ज करने के जोखिमों के बारे में सुनिश्चित करना।

4. Prove the Analysis: 

एक बार जब आप मूल bug का analysis कर लेते हैं, तो आपको कुछ और errors ढूंढनी होंगी जो application पर दिखाई दे सकती हैं। यह चरण एक परीक्षण ढांचे की सहायता से इन क्षेत्रों के लिए स्वचालित परीक्षण लिखने के बारे में है।

5. Cover Lateral Damage : 

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

6. Fix & Validate: 

अंतिम चरण सभी त्रुटियों को ठीक करता है और सभी परीक्षण स्क्रिप्ट को यह जांचने के लिए चलाता है कि क्या वे सभी पास हैं।

Red Also

Debugging Approaches and Strategies

A) Brute Force - सिस्टम को समझने के लिए अधिक समय तक सिस्टम का अध्ययन करें। यह डिबगर को जरूरत के आधार पर डिबगिंग करने के लिए सिस्टम के विभिन्न अभ्यावेदन बनाने में मदद करता है। सॉफ़्टवेयर में हाल ही में किए गए परिवर्तनों को खोजने के लिए सिस्टम का एक अध्ययन भी सक्रिय रूप से किया जाता है।

B) Backtracking - समस्या का पिछला विश्लेषण जिसमें दोषपूर्ण कोड के क्षेत्र की पहचान करने के लिए प्रोग्राम को विफलता संदेश के स्थान से पीछे की ओर ट्रेस करना शामिल है। दोषों के कारण का पता लगाने के लिए क्षेत्र का विस्तृत अध्ययन किया जाता है।

C) Forword Analysis Program - के आगे के विश्लेषण में कार्यक्रम में विभिन्न बिंदुओं पर ब्रेकप्वाइंट या प्रिंट स्टेटमेंट का उपयोग करके प्रोग्राम को आगे ट्रेस करना और परिणामों का अध्ययन करना शामिल है। जिस क्षेत्र में गलत आउटपुट प्राप्त होते हैं, वह वह क्षेत्र है जिस पर दोष खोजने के लिए ध्यान केंद्रित करने की आवश्यकता होती है।

D) सॉफ़्टवेयर के पिछले अनुभव का उपयोग करके  - सॉफ़्टवेयर को प्रकृति में समान समस्याओं के साथ डीबग करें। इस दृष्टिकोण की सफलता डीबगर की विशेषज्ञता पर निर्भर करती है।

E) Cause elimination -  यह द्विआधारी विभाजन की अवधारणा का परिचय देता है। संभावित कारणों को अलग करने के लिए त्रुटि घटना से संबंधित डेटा को व्यवस्थित किया जाता है।

Difference Between Debugging and Testing:

debugging testing से बिलकुल अलग है  क्योकि testing की process स्ट्रेटेजीज अलग होता है और डिबग का अलग इसलिए यह दोनों एक अलग-अलग process होता है निचे इसके अन्तर को समझते है -
Testing Debugging
Testing Bugs, errors, इत्यादि को खोजने पर फोकस करते हैं। जबकि Debugging में Bug की पहचान के बाद शुरू होती है।
Testing का उपयोग यह सुनिश्चित करने के लिए किया जाता है कि program सही है और इसे एक निश्चित न्यूनतम success rate के साथ करना चाहिए था। डिबगिंग के लिए बहुत अधिक ज्ञान, कौशल और विशेषज्ञता की आवश्यकता होती है। इसे उपलब्ध कुछ स्वचालित उपकरणों द्वारा समर्थित किया जा सकता है।
testing manual या automatic हो सकता है। Debugging में manual से अधिक को ज्यादा focus किया जाता है।
कई अलग-अलग प्रकार के testing हैं जैसे unit testing, integration testing, alpha and beta testing आदि। लेकिन यह एक मैनुअल प्रक्रिया से अधिक है क्योंकि प्रत्येक बग अलग है और पूर्व-परिभाषित परीक्षण तंत्र के विपरीत, एक अलग तकनीक की आवश्यकता होती है।

Debugging Tools:

Debugger एक सॉफ्टवेयर टूल है जो ऑपरेटिंग सिस्टम या एप्लिकेशन डेवलपमेंट के विभिन्न चरणों में कोडिंग त्रुटियों की पहचान करके सॉफ्टवेयर विकास प्रक्रिया में मदद कर सकता है। कुछ डिबगर्स यह देखने के लिए परीक्षण चलाने का विश्लेषण करेंगे कि कोड की कौन सी पंक्तियाँ निष्पादित नहीं की गई थीं।

  1. WinDbg
  2. IDA
  3. B4X
  4. React Studio
  5. Microsoft Small Basic

डिबगिंग टूल एक कंप्यूटर प्रोग्राम है जिसका उपयोग अन्य प्रोग्रामों का परीक्षण और डिबग करने के लिए किया जाता है। बहुत सारे सार्वजनिक डोमेन सॉफ़्टवेयर जैसे GDB और DBX online डिबगिंग के लिए उपलब्ध हैं।

PDF Notes What is Debugging in Software Engineering Download PDF

Post a Comment

0 Comments