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

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

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

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

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

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

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

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

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

यह भी देखें

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

बाहरी संबंध

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