Кіріспе
Linux жүйесі үшін диагностикалық, түзету және оқулық пайдаланушы кеңістігі құралы strace – Linux жүйесі үшін диагностикалық, түзету және оқулық пайдаланушы кеңістігі құралы. Ол процестер мен Linux ядросы арасындағы өзара әрекеттесуді – жүйелік шақырулар, сигналдарды жеткізіп беру және процестер күйін өзгерту сияқты – бақылауға және түзетуге арналған. Strace құралының жұмыс істеуі ядродағы ptrace мүмкіндігі арқасында жүзеге асырылады. Кейбір Unix сияқты жүйелерде strace-ке ұқсас басқа диагностикалық құралдар да бар, мысалы truss.
strace is a diagnostic, debugging and instructional userspace utility for Linux. It is used to monitor and tamper with interactions between processes and the Linux kernel, which include system calls, signal deliveries, and changes of process state. The operation of strace is made possible by the kernel feature known as ptrace. Some Unix like systems provide other diagnostic tools similar to strace, such as truss.
Тарих
Strace 1991 жылы Пол Краненбургпен SunOS үшін жазылған, авторлық құқығына сәйкес, ал 1992 жылдың басында comp.sources.sun томының үшінші бөлімінде жарияланған. Бастапқы README файлында мыналар келтірілген:
– Sun жүйелері үшін Sun ұсынған бағдарламаға ұқсас жүйелік шақыруларды іздейтін құрал. Бұл құрал көзі қолжетімсіз бағдарламаларды, тіпті Sun ұсынған жүйелік бағдарламалардың көп бөлігін түзетуге көмектеседі. Кейін Бранко Ланкестер бұл нұсқаны Linux-қа көшіріп, 1992 жылдың қарашасында өзінің нұсқасын шығарды, ал 1993 жылы екінші нұсқасы жарық көрді. Ричард Сладки 1993 жылы strace-тің осы жеке нұсқаларын біріктірді және 1994 жылы бағдарламаны SVR4 және Solaris жүйелеріне көшірді, нәтижесінде comp.sources.misc тобында жарияланған strace 3.0 пайда болды. 1996 жылдан бастап strace-ті Wichert Akkerman күтіп келді. Оның кезеңінде strace-тің дамуы CVS жүйесіне көшірілді, сондай-ақ FreeBSD және Linux-тағы көптеген архитектураларға (ARM, IA 64, MIPS, PA RISC, PowerPC, s390, SPARC және т.б.) портталды. 2002 жылы strace-ті күтіп ұстау міндеті Roland McGrath-қа жүктелді. Одан бері strace бірнеше жаңа Linux архитектураларын (AMD64, s390x, SuperH) қолдауға алды, олардың кейбіреулері үшін би-архитектуралық қолдау енгізілді, сондай-ақ Linux-тағы syscalls декодерлеріне көптеген толықтырулар мен жақсартулар жасалды. Сол кезеңде strace дамуы git жүйесіне көшірілді. 2009 жылдан бері strace-ті Дмитрий Левин белсенді түрде күтіп келеді. Одан бері strace AArch64, ARC, AVR32, Blackfin, Meta, Nios II, OpenSISC 1000, RISC V, Tile/TileGx, Xtensa архитектураларын қолдауға ие болды. Strace-тің Linux емес операциялық жүйелер үшін кейбір (көрінетіндей пайдасыз) кодты қамтитын соңғы нұсқасы 4.6 болды, ол 2011 жылдың наурыз айында шығарылды. 2012 жылдың мамырында шыққан 4.7 нұсқасында Linux емес барлық код алынып тасталды. 4.13 нұсқасынан бастап жоба Linux ядросының шығарылым кестесін қабылдады, ал 5.0 нұсқасы Linux нұсқалау схемасын да қабылдады. 2012 жылы strace жолдарды іздеу және файл дескрипторы жолын кодтау мүмкіндігін алды. 2014 жылдың тамызында 4.9 нұсқасы шығарылды, онда стек іздерін басып шығару мүмкіндігі қосылды. 2016 жылдың желтоқсанында syscall қателіктерін енгізу мүмкіндігі іске асырылды.