PurifyPlus

PurifyPlus هو برنامج لتصحيح أخطاء الذاكرة، يستخدمه مطورو البرامج لاكتشاف أخطاء الوصول إلى الذاكرة في البرامج، وخاصة تلك المكتوبة بلغة C أو C++ . كتبه في الأصل ريد هاستينغز من شركة Pure Software . [ 1 ] اندمجت Pure Software لاحقًا مع Atria Software لتشكيل Pure Atria Software، والتي استحوذت عليها بدورها Rational Software ، ثم استحوذت عليها IBM ، قبل أن تُباع إلى UNICOM Systems , Inc. في 31 ديسمبر 2014. وهو مشابه وظيفيًا لبرامج تصحيح أخطاء الذاكرة الأخرى، مثل Insure++ و Valgrind و BoundsChecker .

ملخص

يُتيح PurifyPlus التحقق الديناميكي، وهي عملية يكتشف البرنامج من خلالها الأخطاء التي تحدث أثناء تشغيله، تمامًا مثل مصحح الأخطاء . أما التحقق الثابت أو تحليل الكود الثابت ، في المقابل، فيتضمن اكتشاف الأخطاء في الكود المصدري دون الحاجة إلى تجميعه أو تشغيله، وذلك بمجرد اكتشاف التناقضات المنطقية. ويُعد فحص أنواع البيانات بواسطة مُجمِّع لغة C مثالًا على التحقق الثابت.

عند ربط برنامج بـ PurifyPlus، يُدرج رمز التحقق المُصحَّح تلقائيًا في الملف التنفيذي عن طريق تحليل رمز الكائن وإضافته إليه ، بما في ذلك المكتبات. وبهذه الطريقة، في حال حدوث خطأ في الذاكرة، سيطبع البرنامج الموقع الدقيق للخطأ، وعنوان الذاكرة المُتأثر، ومعلومات أخرى ذات صلة. كما يكشف PurifyPlus عن تسريبات الذاكرة . افتراضيًا، يُنشأ تقرير تسريب عند انتهاء البرنامج، ولكن يمكن أيضًا إنشاؤه عن طريق استدعاء واجهة برمجة تطبيقات كشف التسريب الخاصة بـ PurifyPlus من داخل تطبيق مُجهَّز.

تشمل الأخطاء التي يكتشفها PurifyPlus عمليات قراءة وكتابة حدود المصفوفات، ومحاولة الوصول إلى ذاكرة غير مخصصة، وتحرير ذاكرة غير مخصصة (عادةً بسبب تحرير نفس الذاكرة للمرة الثانية)، بالإضافة إلى تسرب الذاكرة (ذاكرة مخصصة بدون مرجع مؤشر). معظم هذه الأخطاء ليست قاتلة (على الأقل ليس في موضع الخطأ)، وغالبًا ما لا توجد طريقة لاكتشافها عند تشغيل البرنامج، إلا من خلال ملاحظة وجود خطأ ما بسبب سلوك غير صحيح للبرنامج. لذا، يساعد PurifyPlus في اكتشاف هذه الأخطاء وإخبار المبرمج بمكان حدوثها بدقة. ولأن PurifyPlus يعمل عن طريق تحليل جميع أكواد الكائنات ، فإنه يكتشف الأخطاء التي تحدث داخل مكتبات الطرف الثالث أو مكتبات نظام التشغيل . غالبًا ما تنتج هذه الأخطاء عن تمرير المبرمج وسائط غير صحيحة لاستدعاءات المكتبة، أو عن سوء فهم لبروتوكولات تحرير هياكل البيانات التي تستخدمها المكتبات. غالبًا ما تكون هذه الأخطاء هي الأصعب في العثور عليها وإصلاحها.

الاختلافات عن أدوات تصحيح الأخطاء التقليدية

تُعدّ القدرة على اكتشاف الأخطاء غير الفادحة ميزةً رئيسيةً تُميّز PurifyPlus عن برامج تصحيح الأخطاء التقليدية . فعلى النقيض، لا تُتيح برامج تصحيح الأخطاء عادةً للمبرمج سوى تحديد مصادر الأخطاء الفادحة بسرعة، مثل تعطل البرنامج نتيجةً لمحاولة الوصول إلى مؤشر فارغ ، لكنها لا تُساعد في اكتشاف أخطاء الذاكرة غير الفادحة. تُفيد برامج تصحيح الأخطاء في أمور أخرى لا يُصمّم PurifyPlus لأجلها، مثل تتبّع تنفيذ البرنامج سطرًا بسطر أو فحص ذاكرة البرنامج يدويًا في لحظة مُحدّدة من التنفيذ. بعبارة أخرى، يُمكن لهذه الأدوات أن تُكمّل بعضها بعضًا للمطور المُحترف.

يتضمن PurifyPlus أيضًا وظائف أخرى، مثل نقاط المراقبة عالية الأداء ، والتي تعتبر ذات فائدة عامة أثناء استخدام مصحح الأخطاء على التعليمات البرمجية الخاصة بالشخص.

يُعدّ استخدام PurifyPlus الخيار الأمثل في لغات البرمجة التي تترك إدارة الذاكرة للمبرمج. ففي لغات مثل Java و Lisp و Visual Basic ، على سبيل المثال، تُقلّل إدارة الذاكرة التلقائية من احتمالية حدوث أي تسريبات للذاكرة . مع ذلك، قد تُعاني هذه اللغات من تسريبات؛ إذ تُعيق المراجع غير الضرورية للكائنات إعادة تخصيص الذاكرة. ولدى IBM منتج يُسمى Rational Application Developer لكشف هذا النوع من الأخطاء.

المنصات المدعومة

المنصات المدعومة للغة C/C++

نظام التشغيلمعمارية المعالجاتإصدار نظام التشغيلالمترجمون
سولاريس
صن ألتراسباركنظام التشغيل Solaris 11 الأساسي حتى الإصدار 11.4، ونظام التشغيل Solaris 10 الأساسي حتى الإصدار U11Sun C/C++ 5.10 إلى 5.15
AMD64 Intel 64من الإصدار الأساسي Solaris 11 إلى الإصدار 11.4، ومن الإصدار U6 إلى الإصدار U11 من Solaris 10Sun C/C++ 5.10 إلى 5.15
لينكس
إنتل IA-32RHEL 9 (خادم/سطح مكتب) من الإصدار الأساسي حتى 9.4، RHEL 8 (خادم/سطح مكتب) من الإصدار الأساسي حتى 8.9، RHEL 7 (خادم/سطح مكتب) من الإصدار الأساسي حتى 7.9، SLES 15 من الإصدار الأساسي حتى 15.5 ، SLES 12 من الإصدار الأساسي حتى 12.5GNU gcc/g++ من الإصدار 4 إلى الإصدار 11
AMD64 Intel 64RHEL 9 (خادم/سطح مكتب) من الإصدار الأساسي حتى 9.4، RHEL 8 (خادم/سطح مكتب) من الإصدار الأساسي حتى 8.9، RHEL 7 (خادم/سطح مكتب) من الإصدار الأساسي حتى 7.9، SLES 15 من الإصدار الأساسي حتى 15.5 ، SLES 12 من الإصدار الأساسي حتى 12.5GNU gcc/g++ من الإصدار 4 إلى الإصدار 11
ويندوز
إنتل IA-32، إنتل 64، AMD 64مايكروسوفت ويندوز 10 الأساسي حتى 21H1، مايكروسوفت ويندوز سيرفر 2019 القياسي، مركز البيانات، مايكروسوفت ويندوز سيرفر 2016 القياسي، مركز البيانات، مايكروسوفت ويندوز سيرفر 2012 الأساسي، الأساسي، القياسي، مركز البياناتمايكروسوفت فيجوال ستوديو من 2010 إلى 2022

المنصات المدعومة Java/.NET

منصةنوع مجموعة البياناتبيئة التشغيل
ويندوز
جمع البيانات بلغة C/C++ (كود غير مُدار)مايكروسوفت فيجوال ستوديو من 2010 إلى 2022
جمع بيانات تغطية كود جافاIBM JRE 5 إلى 8 ، SUN JRE 1.5 إلى 1.8
جمع البيانات في .NET (التعليمات البرمجية المُدارة)إطار عمل .NET من الإصدار 3.0 إلى 4.5 المستخدم مع Microsoft Visual Studio من الإصدار 2010 إلى 2022

انظر أيضاً

مراجع

  1. Purify: الكشف السريع عن تسريبات الذاكرة وأخطاء الوصول. بقلم ريد هاستينغز وبوب جويس، المؤتمر التقني Usenix شتاء 1992.