Strace е CLI помощна програма, която се използва за проверка за грешки в системата като позволява наблюдение на системните разговори използва се от определена програма и всички сигнали, които получава. Полезност позволява на потребителя да наблюдава и (от версия 4.15) да се намесва в процеса на взаимодействие между програмата и ядротовключително текущи системни обаждания, изскачащи прозорци и промени в състоянието на процеса
Работата му е възможна чрез функция на ядрото на Linux, наречена ptrace. Той е подобен на truss приложението, налично в други системи на Unix. Програмата Cygwin предоставя подобна програма. Най-честото му използване е да го стартира заедно с програмата, която се проследява, която отпечатва списък със системните повиквания, които изпълнява.
Полезно е да разберете причината за отказ на определена програмаили защото съобщава за ситуации, в които например програмата се опитва да осъществи достъп до файл, който не съществува или за който няма разрешение за четене.
От характеристиките, които се открояват от Strace, се открояват следните:
- Да можете да посочите филтър за име на syscall, който да бъде проследен (използвайки опцията -e trace =): по име, като клонинг, вилица, vfork; използване на една от предварително дефинираните групи, като% ipc или% файл; или (от версия 4.17), използвайки синтаксис на регулярния израз, като clock_ *.
- Посочете списък с маршрути за проследяване (например -P /etc/ld.so.cache).
- Посочете списък с файлови дескриптори, чиито I / O трябва да бъдат изхвърлени
- Бройте времето за изпълнение и броя на syscall
- Отпечатване на относителни или абсолютни времеви марки
- Модифицирайте кода за връщане и грешка на определени системни повиквания и инжектирайте сигнали след изпълнение
- Извличане на информация за файлови дескриптори (включително сокети).
- Отпечатване на стека на стека, включително (от версия 4.21) символ за търсене (-k).
- Филтриране по syscall статус на връщане
- strace поддържа декодиране на аргументите на някои командни класове на ioctl, като BTRFS_ *, V4L2_ *, DM_ *, NSFS_ *, MEM *, EVIO *, KVM_ * и няколко други.
Тъй като strace само подробно извиква системата, не може да се използва за откриване на толкова много проблеми, колкото дебъгер на код като GNU Debugger (gdb). Той обаче е по-лесен за използване от кода за отстраняване на грешки и е изключително полезен инструмент за системните администратори. Той се използва и от изследователите за генериране на следи от системни повиквания за по-късно повторно възпроизвеждане.
Относно новата версия на Strace 5.3
Наскоро беше представена новата версия на strace 5.3, в която лицензът на кода се промени от BSD на LGPLv2.1 + и GPLv2 + за пробната версия.
Също така в рамките на промените, които се открояват, че е там поддръжка за филтриране на системни обаждания чрез създаване на seccomp филтри ("–Seccomp-bpf"), както и кода за връщане ("-e status = ...").
Друга промяна, която се откроява в анонса на тази нова версия, е, че разработчиците са добавили поддръжка за системни повиквания за декодиране pidfd_open и clone3, плюс подобрено декодиране на системните повиквания io_cancel, io_submit, s390_sthyi и syslog.
Също така в рекламата е подчертано, че Командата ioctl изброява синхронизиране с ядрото на Linux 5.3
От останалите промени които са споменати в рекламата, са:
- Подобрено декодиране на протокол NETLINK_ROUTE
- Декодираният атрибут на мрежовата връзка UNIX_DIAG_UID и командите WDIOC_ * ioctl
- Актуализирани са списъците с константи AUDIT_ *, BPF_ *, ETH_ *, KEYCTL_ *, KVM_ *, MAP_ *, SO_ *, TCP_ *, V4L2_ *, XDP_ * и * _MAGIC
Как да инсталирам strace 5.3 на Ubuntu и деривати?
Помощната програма Strace може да бъде намерена в хранилищата на Ubuntu, както и нейните производни, но доколкото към тази нова версия, тя не е била включена в хранилищата. Инсталирането през хранилищата може да се извърши чрез изпълнение на следната команда:
sudo apt install strace
Сега за тези, които искат да инсталират тази нова версия, те трябва да изтеглят изходния код и да компилират на вашата система.
Те изтеглят изходния код с:
git https://gitlab.com/strace/strace.git
Те влизат с:
cd strace
И те се компилират с:
./configure && make && make install
Накрая относно използването, можете да намерите някои ръководства в мрежата.