Кіріспе

PurifyPlus – бағдарлама жасаушылар бағдарламалардағы, әсіресе C немесе C++ тілдерінде жазылған бағдарламалардағы жадқа қате қолжеткізу қателерін анықтау үшін қолданатын жадты тексеру бағдарламасы. Оны бастапқыда Pure Software компаниясының Рид Хейстингс жазған. Pure Software кейіннен Atria Software компаниясымен бірігіп Pure Atria Software компаниясын құрды, кейіннен оны Rational Software сатып алды, одан кейін IBM сатып алды, және 2014 жылдың 31 желтоқсанында UNICOM Systems, Inc. компаниясына өткізілді. Ол Insure++, Valgrind және BoundsChecker сияқты басқа жадты тексеру бағдарламаларымен функционалдық тұрғыдан ұқсас.

Шолу

PurifyPlus динамикалық тексеруге мүмкіндік береді, бұл бағдарламаның жұмыс істеу кезінде туындайтын қателерді анықтау процесі, ол жөндеу құралына ұқсас. Статикалық тексеру немесе статикалық кодты талдау, керісінше, бастапқы кодтағы қателерді компиляциялау немесе орындаусыз, тек логикалық қайшылықтарды анықтау арқылы табуды қамтиды. C компиляторының типтік тексеруі – статикалық тексерудің мысалы. PurifyPlus бағдарламасымен байланыстырылғанда, түзетілген тексеру коды автоматты түрде орындалатын файлға, кітапханаларды қоса алғанда, объектілік кодты талдап, қосу арқылы енгізіледі. Осылайша, егер жад қатесі туындаса, бағдарлама қате орнының нақты координаталарын, жад адресін және басқа да қажетті ақпаратты шығарады. PurifyPlus жадтың толықсыздануын да анықтайды. Дәстүрлі түрде, бағдарлама аяқталғанда толықсыздану туралы есеп жасалады, бірақ оны аспапталған қолданба ішінде PurifyPlus толықсыздануды анықтау API-ін шақыру арқылы да жасауға болады. PurifyPlus анықтайтын қателерге массив шектерінен оқу және жазу, бөлінбеген жадқа қол жеткізуге тырысу, бөлінбеген жадты босату (әдетте бір жадты екінші рет босатудан), сондай-ақ жадтың толықсыздануы (көрсеткіші жоқ бөлінген жад) жатады. Бұл қателердің көпшілігі өлімге алып келмейді (кем дегенде қате орын алған жерде емес), және көбінесе бағдарламаны ғана іске қосқанда, бағдарламаның дұрыс емес жұмысынан туындаған бірдеңе дұрыс емес екенін байқаудан басқа, оларды анықтаудың жолы жоқ. Сондықтан PurifyPlus осы қателерді анықтап, бағдарламашыға олардың қайда туындағанын нақты көрсетеді. PurifyPlus барлық объектілік кодты аспаптап жұмыс істейтіндіктен, ол үшінші тараптың немесе операциялық жүйенің кітапханаларында туындайтын қателерді де анықтайды. Бұл қателер көбінесе бағдарламашының кітапхана шақыруларына дұрыс емес аргументтерді беруінен немесе кітапханалар қолданатын дерек құрылымдарын босату ережелері туралы түсініксіздіктен туындайды. Мұндай қателерді табу және түзету әдетте өте қиын.

Дәстүрлі жөндеушілерден айырмашылықтары

Өлімге әкелмейтін қателерді анықтау мүмкіндігі PurifyPlus пен әдеттегі жөндеушілерден және ұқсас бағдарламалардан басты айырмашылық болып табылады. Керісінше, жөндеушілер бағдарламашыға фатальды қателердің көздерін жылдам табуға көмектеседі, мысалы, нөлдік көрсеткіш арқылы дерек алудан туындаған бағдарламаның құлауы, бірақ фатальды емес жад қателерін анықтауға көмектеспейді. Дебьюгерлер PurifyPlus-тің мақсатына сай келмейтін басқа да нәрселерге пайдалы, мысалы, кодты жол-жолдан өтуге немесе бағдарламаның жадын орындалу кезінде қолмен тексеруге. Басқаша айтқанда, бұл құралдар білікті дамытушы үшін бір-бірін толықтыра алады. PurifyPlus жоғары өнімділіктегі бақылау нүктелері сияқты қосымша функционалдықтарды да қамтиды, олар кодты жөндеушіні қолданған кезде жалпы пайдалы болады. PurifyPlus-ті пайдалану жадты басқаруды бағдарламалаушыға қалдыратын бағдарламалау тілдерінде ең тиімді екенін атап өту керек. Сондықтан, Java, Lisp немесе Visual Basic сияқты тілдерде автоматты жад басқару жад ағып кету мүмкіндігін азайтады. Дегенмен, бұл тілдерде де ақаулар болуы мүмкін: объектілерге қажетсіз сілтемелер жадтың қайта бөлінуіне кедерілді етеді. IBM компаниясы осы сияқты қателерді анықтауға көмектесетін Rational Application Developer атты өнімге ие.

Қолдауы бар C/C++ платформалары

Опералық жүйе Процессор архитектуралары Опералық жүйе нұсқалары Компиляторлар Solaris Sun UltraSPARC Solaris 11 негізгі нұсқасынан 11.4-ке дейін Solaris 10 негізгі нұсқасынан U11-ге дейін Sun C/C++ 5.8-ден 5.15-ке дейін GNU gcc/g++ 4 және 5 AMD64Intel 64 Solaris 11 негізгі нұсқасынан 11.4-ке дейін Solaris 10 U6-дан U11-ге дейін Sun C/C++ 5.8-ден 5.15-ке дейін GNU gcc/g++ 4-тен 8-ге дейін Linux Intel IA 32RHEL 8 (Server/Desktop) негізгі нұсқасынан 8.3-ке дейін RHEL 7 (Server/Desktop) негізгі нұсқасынан 7.9-ға дейін RHEL 6 (Server/Desktop) негізгі нұсқасынан 6.10-ға дейін SLES 12 негізгі нұсқасынан SP4-ке дейін SLES 11 негізгі нұсқасынан SP3-ке дейін GNU gcc/g++ 4-тен 8-ге дейін Intel icc 11.0-дан 11.1-ге дейін AMD64Intel 64 RHEL 8 (Server/Desktop) негізгі нұсқасынан 8.3-ке дейін RHEL 7 (Server/Desktop) негізгі нұсқасынан 7.9-ға дейін RHEL 6 (Server/Desktop) негізгі нұсқасынан 6.10-ға дейін SLES 12 негізгі нұсқасынан SP4-ке дейін SLES 11 негізгі нұсқасынан SP3-ке дейін GNU gcc/g++ 4-тен 8-ге дейін Intel icc 11.0-дан 11.1-ге дейін Windows Intel IA 32Intel 64AMD 64 Microsoft Windows 10 негізгі нұсқасынан 21H1-ге дейін Microsoft Windows 8 негізгі нұсқасынан 8.1-ге дейін Microsoft Windows Server 2019 Standard, Data Center Microsoft Windows Server 2016 Standard, Data Center Microsoft Windows Server 2012 Foundation, Essential, Standard, Data Center Microsoft Windows Server 2008 Enterprise, Standard, Data Center, негізгі нұсқасынан SP2-ге дейін Microsoft Windows Server 2008 R2 Foundation, Enterprise, Standard, Data Center, негізгі нұсқасынан SP1-ге дейін Visual Studio 2010-нан 2019-ға дейін

Қолдауы бар Java/.NET платформалары

Платформа Мәліметтер жинау түрі Орындалу ортасы Windows C/C++ (басқарылмаған код) деректер жинау Microsoft Visual Studio 2010–2019 Java кодты қамту деректер жинау IBM JRE 5–8 SUN JRE 1.5–1.8 .NET (басқарылатын код) деректер жинау .NET Framework 3.0–4.5 Microsoft Visual Studio 2010–2019 қолданылады.