Кіріспе

Профильдеу, жадтағы қателерді жою және жад ақауларын анықтауға арналған бағдарламалық құрал

Valgrind (/v/æ/l/ɡ/r/ɪ/n/d/) – жадтағы қателерді жою, жад ақауларын анықтау және профильдеуге арналған бағдарламалық құрал. Valgrind бастапқыда x86 Linux жүйесі үшін ақысыз лицензияланған жадты жөндеу құралы ретінде жасалған, бірақ содан бері тексерушілер мен профильдер сияқты динамикалық талдау құралдарын жасауға арналған жалпы платформаға айналды.

Шолу

Valgrind – бұл, негізінен, тек уақытында компиляциялау әдістерін қолданатын виртуалды машина, оның ішінде динамикалық қайта компиляциялау. Бастапқы бағдарламаның ешқайсысы тікелей хост-процессорда орындалмайды. Оның орнына, Valgrind бағдарламаны алдымен уақытша, қарапайым түрге аударады, ол процессорға бейтарап, статикалық бір тапсырмаға негізделген аралық өрнек (IR) болып табылады. Аралық өрнекке (IR) аударғаннан кейін, құрал (төменде қараңыз) IR-де қалаған өзгерістерін жасауға болады, ал Valgrind IR-ді машиналық кодқа қайта аударғаннан кейін ғана хост-процессор оны орындай алады. Valgrind екілік кодты хост және мақсатты (немесе симуляцияланған) процессорларда, бір архитектурада жұмыс істеу үшін қайта құрастырады. Сондай-ақ, Valgrind-те жұмыс істеп жатқан мақсатты бағдарламаны жөндеуге мүмкіндік беретін GDB интерфейсі және Valgrind құралынан түрлі ақпарат алуға арналған "монитор командалары" бар. Мұндай түрлендірулерде (әдетте, құрал қосатын код) өнімділіктің айтарлықтай бөлігі жоғалады; әдетте, Valgrind және "жоқ" құралымен (IR-ге ештеңе өзгеріс енгізбейтін) орындалатын код, қалыпты бағдарлама жылдамдығының 20%-дан 25%-ымен жұмыс істейді.

Қолданылатын платформалар

3.4.0 нұсқасынан бастап Valgrind Linux жүйесінде x86, x86 64 және PowerPC процессорларын қолдайды. Linux жүйесінде ARMv7 қолдауы (мысалы, кейбір смартфондарда қолданылады) 3.6.0 нұсқасында қосылды. Solaris жүйесіне қолдау 3.11.0 нұсқасында, ал FreeBSD x86 және amd64 жүйелеріне қолдау 3.18.0 нұсқасында қосылды. FreeBSD aarch64 жүйесіне қолдау 3.23.0 нұсқасында пайда болады. OpenBSD және NetBSD сияқты Unix жүйелеріне ұқсас басқа платформаларға ресми емес порттар бар. 3.7.0 нұсқасынан бастап ARM/Android платформасын қолдау қосылды. Дамылған кезде (шығарылмас бұрын) жоба Heimdall деп аталды; бірақ бұл атау қауіпсіздік пакетімен қақтығысуға мүмкіндік бермейтін еді. Valgrind-тің бастапқы авторы Джулиан Севард, ол 2006 жылы Valgrind-тегі жұмысы үшін Google O'Reilly Open Source Award сыйлығын жеңіп алды. Николас Недеркотт, Барт Ван Асш, Флориан Кром, Том Хьюз, Филипп Варокьерс, Марк Вилаард, Пол Флойд, Петар Йованович, Карл Лав, Серион Армор Браун және Иво Райзер сияқты көптеген адамдар да маңызды үлес қосты. Оны Linux негізіндегі бірнеше жобалар пайдаланады.