Strace е софтуер с отворен код и свободен софтуер, предназначен за разработчици и системни администратори, осигуряващ система за проследяване на обаждания, изпълнявана в C и предназначена да работи изключително под операционни системи GNU / Linux.
Програмата е много полезна програма за отстраняване на грешки, инструкции и диагностика, която може да събере всички системни повиквания, генерирани от програма или процес, и да отпечата следа. Това е програма от командния ред, която може да се използва само от конзолна среда или чрез приложение за емулатор на терминали.
Инструментът може да бъде използван от специалисти по диагностика, отстраняване на неизправности, както и системни администратори, които искат безценно решение за решаване на проблеми с програмите със затворен код. Тя е написана от Дмитрий В. Левин, Роланд Макграт и Уихерт Акерман.
Опции на командния ред
Както всеки друг софтуер на командния ред, strace предлага голямо разнообразие от опции за командния ред, които позволяват на потребителя лесно да използва всичките си функции и функции, за да изпълни задачите си. Всички свои опции за командния ред могат да се видят накратко, като се стартира & lsquo; strace --help & rsquo; команда.
Сред най-интересните опции за командния ред можем да споменем подкрепа за времето за отчитане, обаждания и грешки за всеки системен интерфейс, поддръжка за обобщаване на латентността на системата, поддръжка за проследяване на достъпа до даден маршрут, поддръжка за активиране на отстраняването на грешки към stderr, както и поддръжка за стартиране на процеса на проследяване като отделен внук, а не като родител.
Освен това ще можете да изпращате информация за проследяване до конкретен файл вместо stderr, да настроите режима за проследяване на системните сигнали към режийните потребителски кодове, да зададете PID файл за процеса на проследяване, да ограничите продължителността на печатащите низове да се зареждат символи, да се изпълняват команди като потребителско име за работа setgid и / или setuid, и да се раздели на специфична система.
Първи стъпки със стрелка
Strace се разпространява само като източник на тарбал, но може лесно да се инсталира на многобройни разпределения на Linux от главните софтуерни хранилища. За да го инсталирате от източници, просто трябва да изтеглите последната версия от Softoware, да запазите архива на избрано от вас място и да го разопаковате.
Отворете приложение за терминал, отидете на мястото на извлечените архивни файлове (например cd /home/softoware/strace-4.9), изпълнете ./configure && make & rsquo; команда за конфигуриране и компилиране на браузъра, след което изпълнете "install install"; команда като корен или sudo make install & rsquo;
Какво е новото в това издание:
- Подобрения:
- Добавена е опцията за отпечатване на протокол и адресна информация, свързана с дескрипторите на сокет.
- Разширено "-e read = set" и "-e write = set" опции за покриване на sendmsg, recvmsg, sendmmsg и recvmmsg syscalls.
- Внедри пълно 32-битово декодиране на ioctl командите (адреси на Debian bug # 692913 и Fedora bug # 902788).
- Изпълнена е поддръжка на API за PTRACE_GETREGS на ia64.
- Изпълнена поддръжка на API за PTRACE_GETREGS на mips.
- Изпълнена е поддръжка на API за PTRACE_GETREGSET на s390 / s390x.
- Въведено декодиране на системите getrandom и seccomp.
- Внедри пълно декодиране на 64-битовите комплекти способности
- Въведено декодиране на всички команди prctl.
- Въведено декодиране на параметризирани команди ioctl.
- Въведено декодиране на команди за evdev ioctl.
- Въведено декодиране на команди v4l ioctl.
- Въведено декодиране на команди за SG_IO v4 ioctl.
- Въведено декодиране на командите FIFREEZE / FITHAW / FITRIM ioctl.
- Въведено декодиране на FALLOC_FL_ * флайковани флагове.
- Въведено декодиране на mask сигнала rt_sigreturn на aarch64, x32 и x86_64.
- Разширен джобен декодер за поддръжка на гнезда за Bluetooth.
- Подобрено декодиране на скритите команди на ioctl.
- Подобрено декодиране на системата getockopt и setsockopt.
- Подобрено декодиране на системата sysinfo.
- Подобрено декодиране на struct cmsghdr.
- Подобрено декодиране на състоянието на изчакване.
- Подобрена поддръжка за aio на не-x86 архитектури с помощта на външни libaio.h.
- Добавена е O_TMPFILE към списъка с разпознати флагове за отворен режим.
- Актуализира списъка на типовете конфигурации на файлова система, който се използва при декодирането на системните системни файлове на семейство statfs.
- Актуализирани списъци с константи CAP_ *, PR_ *, PTRACE_ *, SCHED_ *, SO_ *, SOL_ *, SWAP_FLAG_ * и TFD_ *.
- Актуализирани списъци на сигналните константи от Linux 3.19.
- Актуализирани списъци с грешни константи от Linux 3.19.
- Актуализирани списъци с ioctl команди от Linux 3.9.
- Добавени са нови записи за syscall, за да съответстват на Linux 3.19.
- Поправки на програмни грешки:
- Фиксирани са различни грешки при картографирането между системните номера и свързаната с тях информация, като например броя на системните аргументи, името на syscall и системния декодер.
- Фиксирани цитиращи проблеми в дескрипторите за печат, имена на файлове, имена на мрежови интерфейси, членове на имена на структури, имена на устройства / набори от командите BLK * ioctl.
- Фиксирано uid_t / git_t декодиране.
- Проблеми при четене на фиксирани потенциални извънредни стойности в декодерите getdents / getdents64.
- Фиксиран потенциал за отваряне на флагове при някои архитектури.
- Фиксирано декодиране на структурата ifreq.ifr_name.
- Фиксирано декодиране на командата SIOCSIFNAME ioctl.
- Фиксирано декодиране на флагове RENAME_ * renameat2.
- Фиксирано декодиране на времеви структури UTIME_NOW / UTIME_OMIT.
- Фиксирано декодиране на индиректни ipc subcalls на някои архитектури.
- Фиксирано декодиране на fanotify_mark syscall на 32-битови архитектури.
- Фиксирано декодиране на 32-битови статични структури на 64-битови архитектури.
- Фиксирано декодиране на 32-битова структура cmsghdr на 64-битови архитектури.
- Фиксирано декодиране на 32-битов преавент / pwritev отместване на 64-битови архитектури.
- Фиксирано декодиране на mask сигнала sigreturn / rt_sigreturn на ia64, ppc, ppc64, sparc, sparc64, mips и s390.
- Фиксиран изход на указател на инструкции (-i опция) на архитектури, поддържащи няколко личности.
- Фиксирано поведение на "-e read = set" и "-e write = set" когато четките и записите се пресичат.
- Фиксирано изграждане на системи, в които структурираното задействане няма член sa_restorer.
- Фиксирано изграждане с uclibc и musl libc.
- преносимост:
- Linux kernel & gt; = 2.5.46 е задължително. По-старите версии без прилична поддръжка на PTRACE_SETOPTIONS няма да работят.
- На mips се изисква linux kernel & gt; = 2.6.15. По-старите версии без прилична поддръжка на PTRACE_GETREGS няма да работят.
- На s390 и s390x се изисква linux kernel & gt; = 2.6.27. По-старите версии без прилична поддръжка PTRACE_GETREGSET няма да работят.
Какво е новото във версия 4.9:
- Промени в поведението:
- Забранената поддръжка на OABI на ARM EABI системите по подразбиране е добавена --ableable-arm-oabi опция, за да я активира по време на конфигуриране.
- Подобрения:
- Добавена е експериментална опция -k за отпечатване на проследяването на стека след всяко проследяване на системата.
- Добавена е възможност за създаване на статистически данни за латентността на системите. (адресира Debian bug # 457497).
- Добавена е поддръжка на ARC архитектура.
- Добавена е поддръжка на API за PTRACE_GETREGS на PowerPC.
- Подобрена поддръжка на Bionic libc и musl libc.
- Подобрено проследяване на процесите на x86 личност на x86_64 и x32.
- Подобрено проследяване на личните процеси на ARM на AArch64.
- Усъвършенствано разпознаване на личността на 32 / 64bit в PowerPC.
- Въведено декодиране на системните системи add_key, ioprio_get, ioprio_set, kexec_load, keyctl, renameat2 и request_key.
- Рационализирано декодиране на системите за избиране, pselect и io_submit.
- Усъвършенствано декодиране на системните файлове delete_module, fanotify_init, fanotify_mark, fcntl, setdomainname, sethostname, setns и sync_file_range.
- Подобрено декодиране на сигналните bitmasks.
- Подобрено декодиране на файловите описания.
- Подобрено декодиране на siginfo_t.
- Подобрено декодиране на PF_NETLINK.
- Актуализирани CLOCK_ * константи (адреси Fedora bug # 1088455).
- Добавени са нови записи за системите, за да съответстват на Linux 3.16.
- Поправки на програмни грешки:
- Добавени са shmat и shmdt към набор от свързани системи за картографиране на паметта.
- Фиксирано отделяне от спряните процеси.
- Фиксирано декодиране на fanotify_mark на 32bit архитектури.
- Фиксирано офсетно декодиране в системите preadv и pwritev.
- Фиксирано декодиране за glibc в режим _FORTIFY_SOURCE.
- Фиксирано декодиране на системата epoll_ctl с аргумент EPOLL_CTL_DEL.
- Фиксирано създаване и конфликт (адреси на грешка в Fedora # 993384).
- Разни корекции в ръководството. (Адреси на бъг на Debian # 725987).
Какво е новото във версия 4.8:
- Промени в поведението:
- В случай на нормално прекратяване на спиралата, когато изходът за следене е пренасочен към тръба, тя вече го затваря и изчаква приключването на процеса на тръбата преди излизане.
- Подобрения:
- Извършване на проследяване чрез API на PTRACE_SEIZE (когато е налице).
- Извършва по-надеждна PTRACE_GETREGSET-базирана детектиране на персонални процеси на x86-64 и x32 (когато е налична).
- Добавена е опцията за проследяване = памет за проследяване на свързаните със системата сигнали за паметта.
- Документирана -b опция.
- Позволените изходни съобщения за състоянието да бъдат потиснати, като дадете опцията -q два пъти.
- Добавена е поддръжка на архитектурата на AArch64 (адреси на грешки в Debian # 693074 и грешка в Fedora # 969858).
- Добавена е поддръжка за архитектури OpenRISC 1000, Meta и Xtensa.
- Добавена е допълнителна поддръжка на Tilegx за Tile.
- Подобрена поддръжка на NOMMU архитектури.
- Подобрено декодиране на getdents, mmap, perf_event_open, ptrace и kvactl syscalls.
- Добавени са нови записи за syscall, които съответстват на Linux 3.9.
- Регенерира списъка с общи имена на ioctl от Linux 3.9.
- Актуализира списъка на грешно константите.
- Актуализирани списъци с константи AF_ *, MADV_ *, MAP_ *, MSG_ *, MS_ *, PF_ *, PR_ *, PTRACE_O_ * и TCP_ *.
- Извършено декодиране на UOI ioctls.
- Премахнат излишен "* 32" имената на ioctl.
- Поправки на програмни грешки:
- Фиксирана ERESTARTNOINTR, пропускаща към пространството на потребителите на древни ядра (адреси Fedora bug # 659382).
- Фиксиращо синхронизиране на структурата на ядрото (адреси на грешка в Debian # 702309).
- Фиксирано декодиране на * xattr syscalls (адреси Fedora bug # 885233).
- Фиксирана обработка на файлове с 64-битови номера от инода чрез 32-битова лента (адреси Fedora bug # 912790).
- Фиксирани вилици за проследяване на SPARC.
- Фиксирано декодиране на fadvise64, fallact, ftruncate64, io_submit, preadv, preadv, pwrite, pwritev, readahead, sigaltstack, sync_file_range, sysctl и truncate64.
- Фиксирани категории от няколко системни елемента на повечето поддържани архитектури.
- Фиксирано декодиране на не-нативни 32-битови личности recv [m] msg syscalls.
- Фиксирано декодиране на множество 32-битови персонални системи на x32.
- Фиксирано декодиране на аргументи ARM, MIPS / o32, PowerPC, S390x и Tile.
- Фиксирано полукодично декодиране на S390x.
- Фиксирано sram_alloc декодиране на Blackfin.
- Фиксирано изграждане, когато process_vm_readv е удар.
- Фиксирано изграждане с по-стари версии на libaio.h.
Какво е новото във версия 4.7:
- Това е стабилно издание с обичайните корекции за грешки, подобрена поддръжка за нови ядра на Linux и други подобрения.
Какво е новото във версия 4.6:
- Това е стабилно издание с обичайни корекции, за нови ядра на Linux и други подобрения, включително нов метод за следване на clone, fork и vfork syscalls, използвайки явните възможности на ядрото на Linux за проследяване на създаването на нишки и детски процеси.
Какво е новото във версия 4.5.20:
- Подобрения:
- Въведено декодиране на новите системни настройки на linux: inotify_init1, recvmmsg.
- Извършено основно декодиране на новите linux системи: preadv, pwritev, rt_tgsigqueueinfo, perf_event_open.
- Подобрено декодиране на наскоро добавени syscalls на не-x86 архитектури чрез замяна на гол декодер със сложни анализатори, активирани по-рано за x86 / x86-64.
- Внедрена - опция за комбиниране на обикновените и -c изходи. (Адреси на бъг на Debian # 466196)
- Подобрено декодиране на mbind и mremap syscalls.
- Усъвършенствано декодиране на опциите за сокет на SOL_PACKET.
- Регенериран списък на имената на ioctl от linux 2.6.33.
- Добавена е поддръжка на архитектурата на TILE.
- Поправки на програмни грешки:
- Фиксирано изграждане с заглавията на ядрото на Linux 2.6.32-rc5 +. (Адреси на бъг на Debian # 560516 и Fedora bug # 539044)
- Фиксирано изграждане на mips.
- Фиксирана обработка на Linux системи без структура statfs64.
- Фиксирана маска за сигнали от сигнали на powerpc.
- Фиксиран потенциал за препълване на буфера в избран декодер. (Адреси на грешка в Fedora # 556678)
- Коригирано нежелано декодиране на ipccall
- Коригирано декодиране на 64-битови системи. (Адреси на бъг на Debian # 570603)
- Коригирано декодиране на getockopt на архитектури, където sizeof (long) & gt; sizeof (междинно съединение). (Адреси на бъг на Debian # 494844)
- Коригирано декодиране на epoll_pwait. (Адреси на бъг на Debian # 513014)
- Коригирана обработка на убитите нишки
Коментари не е намерена