Кіріспе

Бағдарламалық жад проблемаларын іздеу құралы

Жадты жөндеуші – жадтың ағуы мен буфердің толып кетуі сияқты бағдарламалық жад проблемаларын табуға арналған жөндеуші. Мұндай жағдайлар динамикалық жадты бөлу және босату қателігінен туындайды. Қоқыс жинау механизмі бар тілдерде, мысалы, басқарылатын кодта жазылған бағдарламаларға да жадты жөндеушілер қажет болуы мүмкін, мысалы, жинақтардағы "тірі" сілтемелерге байланысты жадтан шығуларды анықтау үшін.

Шолу

Жадты жөндеушілер жадқа қол жеткізуді, жадты бөлу және босату процестерін қадағалау арқылы жұмыс істейді. Көптеген жадты жөндеушілерге қосымшаларды арнайы динамикалық жад бөлу кітапханаларымен қайта құрастыру қажет, олардың API-лары дәстүрлі динамикалық жад бөлу кітапханаларымен үйлесімді, немесе динамикалық байланыс қолданылады. Electric Fence – malloc арқылы жад бөлуді жөндеуге арналған мұндай жөндеуші. Кейбір жадты жөндеушілер (мысалы, Valgrind) орындалатын файлды виртуалды машина сияқты ортада іске қосып, жадқа қол жеткізуді, бөлуді және босатуды қадағалайды, сондықтан арнайы жад бөлу кітапханаларымен қайта компиляция қажет емес. Жадтағы қателерді, мысалы, жадтың толуын (leak) табу өте уақытты талап етеді, себебі олар тек белгілі бір жағдайларда ғана көрінеді. Жадты дұрыс пайдаланбауды анықтауға арналған құралды пайдалану процесті әлдеқайда жылдамдатып, жеңілдетеді. Жадты тым көп пайдалану бағдарламалық қамтамастың ескіруіне себеп болатын фактор болғандықтан, жадты жөндеушілер бағдарламашыларға компьютер жүйесінің жадын толықтырып тастайтын бағдарламалық ақаулардан сақтануға көмектеседі, соның арқасында бағдарламалық қамтамастың ұзақ мерзімді жұмыс істеу кезінде де жоғары сенімділігі қамтамасыз етіледі.

Статикалық анализатормен салыстыру

Кейбір статикалық талдау құралдары жад қателерін табуға да көмектеседі. Жадты жөндеу құралдары қолданба жұмыс істеп тұрғанда оның бір бөлігі ретінде жұмыс істейді, ал статикалық кодты талдау кодты іске қоспай-ақ талдау арқылы жүзеге асырылады. Бұл екі түрлі тәсіл әдетте мәселенің әртүрлі жағдайларын анықтайды, ал оларды бірге қолдану ең жақсы нәтиже береді.

Жад жөндеу құралдарының тізімі

Бұл жадты жөндеуге пайдалы құралдар тізімі. Профайлер жадты жөндеу құралымен бірге қолданылуы мүмкін. АтауЖСЛицензияТілдерТехника AddressSanitizer Linux, Mac OS тегін/ашық кодты (LLVM) C, C++. Компиляция уақытында құрастыру (Clang және GCC-де қолжетімді) және арнайы кітапхана Allinea DDT Linux, Blue Gene коммерциялық C, C++ және F90. Суперкомпьютерлердегі параллель бағдарламалар үшін де қолданылады Идентификациялау уақыты динамикалық байланыс арқылы AQtime Windows (Visual Studio, Embarcadero IDEs) коммерциялық NET, C++, Java, Silverlight, JScript, VBScript Идентификациялау уақыты Bcheck Solaris Шекараны тексеру Windows (Visual Studio) коммерциялық C++ Идентификациялау уақыты немесе компиляция уақыты Daikon Unix, Windows, Mac OS X тегін/ашық кодты Java, C/C++, Perl және Eiffel Идентификациялау уақыты динамикалық инвариантты анықтау Жаңа нұсқау (жалпы техника) (жалпы техника) C++ Компиляция уақытында қайта жазу Deleaker Windows (жеке және Visual Studio, RAD Studio, Qt Creator, CLion плагиндері) коммерциялық C++, Net, Delphi Идентификациялау уақыты dmalloc тегін/ашық кодты C Компиляция уақытында қайта жазу Android, Linux, Windows тегін/ашық кодты (LGPL және BSD) Идентификациялау уақыты Electric Fence Unix C, C++ Компиляция уақытында қайта жазу FASTMM4 Windows Delphi Компиляция уақытында қайта жазу IBM Rational Purify Unix, Windows коммерциялық C++, Java, NET Идентификациялау уақыты Insure++ Windows (Visual Studio плагині), Unix коммерциялық C, C++ кодты құрастыру Intel Inspector Windows (Visual Studio), Linux коммерциялық C, C++, Fortran Идентификациялау уақыты libcwd Linux (gcc) тегін/ашық кодты C, C++ Компиляция уақытында қайта жазу libumem Solaris Solaris-пен бірге келеді Байланыс уақытында қайта жазу Memwatch (бағдарламалық кітапхана) тегін/ашық кодты C Компиляция уақытында қайта жазу mtrace GNU C кітапханасы Кіріктірілген, кірулерді шығарады MTuner C, C++ Идентификациялау уақыты, Байланыс уақытында қайта жазу (MSVC, Clang және GCC), Жадының жоғалуын анықтау Oracle Solaris Studio (бұрын Sun Studio Runtime Checking) Linux, Solaris меншікті тегін бағдарлама C, C++, Fortran OLIVER (APT international) MVS, MVS/EXA, DOS/VSE бағдарламалық IBM Assembler Идентификациялау уақыты, Гипервизор Type 2 TotalView Unix, Mac OS X коммерциялық C, C++, Fortran Идентификациялау уақыты Linux, Mac OS, Android Идентификациялау уақыты WinDbg Windows тегін бағдарлама C, C++, NET, Python Идентификациялау уақыты.