प्योरिफाईप्लस

प्योरिफाईप्लस मेमोरी डिबगर प्रोग्राम है जिसका उपयोग सॉफ़्टवेयर डेवलपर्स द्वारा प्रोग्राम में मेमोरी एक्सेस एरर का पता लगाने के लिए किया जाता है, विशेष रूप से C (प्रोग्रामिंग लैंग्वेज) या C++ में लिखे गए है। यह मूल रूप से प्योर सॉफ्टवेयर के रीड हेस्टिंग्स द्वारा लिखा गया था। प्योर सॉफ्टवेयर को बाद में प्योर एट्रिया सॉफ्टवेयर बनाने के लिए एट्रिया सॉफ्टवेयर के साथ विलय कर दिया गया था, जिसे बाद में यूनिकॉम सॉफ्टवेयर द्वारा अधिग्रहित कर लिया गया था, जिसे बाद में आईबीएम द्वारा अधिग्रहित कर लिया गया था, और फिर 31 दिसंबर, 2014 को यूनिकॉम सिस्टम्स, इंक. को बेच दिया गया था। यह कार्यात्मक रूप से समान है अन्य मेमोरी डिबगर्स के लिए, जैसे इनस्योर++, वालग्रिंड और बाउंड्सचेकर है।

अवलोकन
प्योरिफाईप्लस डायनेमिक सत्यापन की अनुमति देता है, प्रक्रिया जिसके द्वारा प्रोग्राम उन त्रुटियों का पता लगाता है जो प्रोग्राम के चलने पर होती हैं, बहुत सीमा तक डिबगर की तरह स्थिर सत्यापन या स्थिर कोड विश्लेषण, इसके विपरीत, केवल तार्किक विसंगतियों की खोज करके, बिना संकलन या इसे चलाए स्रोत कोड में त्रुटियों का पता लगाना सम्मिलित है। C (प्रोग्रामिंग लैंग्वेज) संकलक द्वारा टाइप चेकिंग स्टैटिक वेरिफिकेशन का उदाहरण है।

जब कोई प्रोग्राम प्योरिफाईप्लस के साथ लिंकर (कंप्यूटिंग) होता है, जिससे लाइब्रेरी सहित वस्तु कोड को पार्स करके और जोड़कर निष्पादन योग्य में सही सत्यापन कोड स्वचालित रूप से डाला जाता है। इस तरह, यदि कोई मेमोरी त्रुटि होती है, जिससे प्रोग्राम त्रुटि के स्पष्ट स्थान, सम्मिलित मेमोरी एड्रेस और अन्य प्रासंगिक जानकारी को प्रिंट करता है। प्योरिफाईप्लस मेमोरी रिसाव का भी पता लगाता है। डिफ़ॉल्ट रूप से, लीक रिपोर्ट प्रोग्राम से बाहर निकलने पर उत्पन्न होती है, किन्तु इंस्ट्रूमेंटेड एप्लिकेशन के अन्दर से प्योरिफाईप्लस लीक-डिटेक्शन एपीआई को कॉल करके भी उत्पन्न की जा सकती है।

प्योरिफाईप्लस जिन त्रुटियों का पता लगाता है, उनमें सरणी सीमाएँ पढ़ना और लिखना सम्मिलित है, असंबद्ध मेमोरी तक पहुँचने की प्रयास करना, असंबद्ध मेमोरी को मुक्त करना (सामान्यतः दूसरी बार उसी मेमोरी को मुक्त करने के कारण), साथ ही मेमोरी लीक (बिना किसी सूचक संदर्भ के आवंटित मेमोरी) इन त्रुटियों में से अधिकांश घातक नहीं हैं (कम से कम त्रुटि के स्थान पर नहीं), और अधिकांशतः प्रोग्राम चलाते समय उनका पता लगाने का कोई विधि नहीं होती है, इसके कि गलत प्रोग्राम व्यवहार के कारण कुछ गलत है। इसलिए प्योरिफाईप्लस इन त्रुटियों का पता लगाने और प्रोग्रामर को यह बताने में सहायता करता है कि वे कहाँ होती हैं। क्योंकि प्योरिफाईप्लस सभी ऑब्जेक्ट कोड को इंस्ट्रुमेंट करके काम करता है, यह उन त्रुटियों का पता लगाता है जो तृतीय-पक्ष या ऑपरेटिंग सिस्टम लाइब्रेरी के अंदर होती हैं। ये त्रुटियां अधिकांशतः प्रोग्रामर द्वारा लाइब्रेरी कॉल के लिए गलत तर्क पारित करने, या पुस्तकालयों द्वारा उपयोग किए जाने वाले डेटा संरचनाओं को मुक्त करने के लिए प्रोटोकॉल के बारे में गलतफहमी के कारण होती हैं। ये अधिकांशतः खोजने और ठीक करने में सबसे कठिन त्रुटियां होती हैं।

पारंपरिक डिबगर्स से अंतर
गैर-घातक त्रुटियों का पता लगाने की क्षमता प्योरिफाईप्लस और सामान्य डिबगर्स से समान कार्यक्रमों के बीच प्रमुख अंतर है। इसके विपरीत, डिबगर्स आम तौर पर केवल प्रोग्रामर को घातक त्रुटियों के स्रोतों को जल्दी से खोजने की अनुमति देते हैं, जैसे कि अशक्त सूचक (कंप्यूटर प्रोग्रामिंग) को संदर्भित करने के कारण प्रोग्राम क्रैश, किन्तु गैर-घातक मेमोरी त्रुटियों का पता लगाने में सहायता नहीं करते हैं। डिबगर्स उन अन्य चीजों के लिए उपयोगी होते हैं जिनके लिए प्योरिफाईप्लस का प्रयोजन नहीं है, जैसे कि कोड लाइन के माध्यम से लाइन के माध्यम से आगे बढ़ना या निष्पादन के किसी विशेष क्षण में प्रोग्राम की मेमोरी को हाथ से जांचना होता है। दूसरे शब्दों में, ये उपकरण कुशल डेवलपर के लिए एक दूसरे के पूरक हो सकते हैं।

प्योरिफाईप्लस में अन्य कार्यात्मकताएं भी सम्मिलित हैं, जैसे उच्च-प्रदर्शन ब्रेकप्वाइंट, जो किसी के कोड पर डिबगर का उपयोग करते समय सामान्य उपयोग के होते हैं।

यह ध्यान देने योग्य है कि प्योरिफाईप्लस का उपयोग प्रोग्रामिंग भाषाओं में सबसे अधिक समझ में आता है जो मेमोरी प्रबंधन को प्रोग्रामर पर छोड़ देता है। इसलिए, जावा (प्रोग्रामिंग भाषा), लिस्प प्रोग्रामिंग भाषा या मूल दृश्य में, उदाहरण के लिए, स्वचालित मेमोरी प्रबंधन किसी भी मेमोरी लीक की घटना को कम करता है। चूँकि इन भाषाओं में अभी भी रिसाव हो सकता है; वस्तुओं के अनावश्यक संदर्भ मेमोरी को पुनः आवंटित होने से रोकेंगे। इस प्रकार की त्रुटियों को प्रदर्शित करने के लिए आईबीएम के पास रैशनल एप्लिकेशन डेवलपर नामक उत्पाद है।

यह भी देखें

 * मेमोरी डीबगर
 * प्रोग्रामिंग टूल
 * गतिशील मेमोरी
 * मेमोरी रिसाव

बाहरी संबंध

 * "A Survey of Systems for Detecting Serial Run-Time Errors" by The Iowa State University’s High Performance Computing Group