strace is een open source en gratis gedistribueerde software die is ontworpen voor ontwikkelaars en systeembeheerders en die voorziet in een systeemcalltracer die is geïmplementeerd in C en die is ontworpen om exclusief onder GNU / Linux-besturingssystemen te worden uitgevoerd.
Het programma is een zeer nuttig hulpprogramma voor foutopsporing, instructie en diagnose waarmee alle systeemaanroepen die door een programma of een proces zijn gegenereerd, kunnen worden verzameld en waarmee een trace kan worden afgedrukt. Het is een opdrachtregelprogramma dat alleen kan worden gebruikt vanuit een console-omgeving of via een terminal-emulator-app.
De tool kan worden gebruikt door diagnostici, probleemoplossers en systeembeheerders die een onbetaalbare oplossing zoeken voor het oplossen van problemen met closed-sourceprogramma's. Het is geschreven door Dmitry V. Levin, Roland McGrath en Wichert Akkerman.
Opdrachtregelopties
Zoals elke andere opdrachtregelsoftware biedt strace een groot aantal opdrachtregelopties waarmee de gebruiker gemakkelijk alle functies en functies kan gebruiken om zijn of haar taken te voltooien. Alle opdrachtregelopties kunnen in een oogopslag worden bekeken door de & lsquo; strace --help & rsquo; commando.
Een van de meest interessante commandoregelopties is ondersteuning voor teltijden, oproepen en fouten voor elke syscall, ondersteuning voor het samenvatten van syscall-latency, ondersteuning voor het traceren van toegangen tot een bepaald pad, ondersteuning voor het inschakelen van debug-uitvoer naar stderr, evenals ondersteuning voor het uitvoeren van een tracerproces als een vrijstaand kleinkind, niet als een ouder.
Bovendien kunt u traceergegevens naar een specifiek bestand verzenden in plaats van stderr, om de overheadkosten in te stellen voor het volgen van syscalls bij overhead-usecs, om een PID-bestand in te stellen voor het traceringsproces, om de lengte van afdruktekenreeksen te beperken om tekens te strsize, om opdrachten uit te voeren als gebruikersnaam om setgid en / of setuid te bewerken en om los te koppelen van een specifieke syscall.
Aan de slag met strace
strace wordt alleen gedistribueerd als een bron-tarball, maar het kan gemakkelijk worden geïnstalleerd op verschillende distributies van Linux vanuit hun hoofdsoftware-repository's. Om het uit bronnen te installeren, downloadt u simpelweg de nieuwste versie van Softoware, slaat u het archief op op een locatie van uw keuze en pakt u het uit.
Open een Terminal-app, ga naar de locatie van de uitgepakte archiefbestanden (bijvoorbeeld cd /home/softoware/strace-4.9), voer. /configure && make & rsquo; uit commando om strace te configureren en compileren, en voer dan de & lsquo; make install & rsquo; uit commando als root of de & lsquo; sudo make install & rsquo; commando als een bevoorrechte gebruiker om strace systeem breed te installeren.
Wat is nieuw in deze versie:
- Verbeteringen:
- Toegevoegd -yy optie om protocol- en adresinformatie af te drukken geassocieerd met socket descriptors.
- Uitgebreid & quot; -e read = set & quot; en & quot; -e write = set & quot; opties om sendmsg, recvmsg, sendmmsg en recvmmsg syscalls te dekken.
- Volledige 32-bits decodering van ioctl-opdrachten geïmplementeerd (adressen Debian-bug # 692913 en Fedora-bug # 902788).
- PTRACE_GETREGS API-ondersteuning geïmplementeerd op ia64.
- PTRACE_GETREGS API-ondersteuning geïmplementeerd op mips.
- PTRACE_GETREGSET API-ondersteuning geïmplementeerd op s390 / s390x.
- Implementatie van decodering van getrandom- en seccomp-syscalls.
- Volledige decodering van 64-bits functies geïmplementeerd.
- Implementatie van decodering van alle prctl-opdrachten.
- Implementatie van decodering van geparametriseerde ioctl-opdrachten.
- Implementatie van decodering van evdev ioctl-opdrachten.
- Implementatie van decodering van v4l ioctl-opdrachten.
- Implementatie van decodering van SG_IO v4 ioctl-opdrachten.
- Implementatie van decodering van FIFREEZE / FITHAW / FITRIM ioctl-opdrachten.
- Implementatie van decodering van FALLOC_FL_ * fallocate-vlaggen.
- Implementatie van decodering van rt_sigreturn-signaalmasker op aarch64, x32 en x86_64.
- Verbeterde socketdecoder om bluetooth-aansluitingen te ondersteunen.
- Verbeterde decodering van niet-vermelde ioctl-opdrachten.
- Verbeterde decodering van wordtockopt en setockopt syscall.
- Verbeterde decodering van sysinfo syscall.
- Verbeterde decodering van struct cmsghdr.
- Verbeterde decodering van de wachtstatus.
- Verbeterde ondersteuning voor aio op niet-x86-architecturen met behulp van externe libaio.h.
- O_TMPFILE toegevoegd aan de lijst met herkende vlaggen voor open modus.
- Bijgewerkte lijst van bestandssysteemconstanten die wordt gebruikt bij het decoderen van statfs familie-syscalls.
- Bijgewerkte lijsten met CAP_ *, PR_ *, PTRACE_ *, SCHED_ *, SO_ *, SOL_ *, SWAP_FLAG_ * en TFD_ * constanten.
- Bijgewerkte lijsten van signaalconstanten van Linux 3.19.
- Bijgewerkte lijsten van errno-constanten van Linux 3.19.
- Bijgewerkte lijsten met ioctl-opdrachten van Linux 3.9.
- Nieuwe syscall-items toegevoegd om overeen te komen met Linux 3.19.
- Bugfixes:
- Diverse fouten in de toewijzing tussen syscall-nummers en bijbehorende informatie, zoals het aantal syscall-argumenten, de naam van syscall en syscall-decoder, gerepareerd.
- Fouten verholpen bij het afdrukken van beschrijvingen, bestandsnamen, netwerkinterfacenamen, struct utsname-leden, apparaat- / volumenamen van BLK * ioctl-opdrachten.
- Uid_t / git_t-decodering hersteld
- Potentiële leesproblemen buiten bereik van getdents / getdents64-decoders opgelost.
- Vaste open vlaggenafbreking op sommige architecturen.
- Vaste decodering van struct ifreq.ifr_name.
- Vaste decodering van de opdracht SIOCSIFNAME ioctl.
- Vaste decodering van RENAME_ * renameat2-vlaggen.
- Vaste decodering van UTIME_NOW / UTIME_OMIT timestructuren.
- Vaste decodering van indirecte ipc-subcalls op sommige architecturen.
- Vaste decodering van fanotify_mark syscall op 32-bits architecturen.
- Vaste decodering van 32-bits statstructuren op 64-bits architecturen.
- Vaste decodering van 32-bits struct cmsghdr op 64-bits architecturen.
- Vaste decodering van 32-bits preadv / pwritev-offset op 64-bits architecturen.
- Vast decoderen van sigreturn / rt_sigreturn-signaalmasker op ia64, ppc, ppc64, sparc, sparc64, mips en s390.
- Uitvoer van vaste instructiepointer (optie -i) op architecturen die meerdere persoonlijkheden ondersteunen.
- Vast gedrag van & quot; -e read = set & quot; en & quot; -e write = set & quot; wanneer lees- en schrijfsets elkaar snijden
- Fixed build op systemen waarbij struct sigaction geen sa_restorer-lid heeft.
- Fixed build met uclibc en musl libc.
- Draagbaarheid:
- Linux-kernel & gt; = 2.5.46 is vereist. Oudere versies zonder fatsoenlijke PTRACE_SETOPTIONS-ondersteuning werken niet.
- Op mips is linux kernel & gt; = 2.6.15 vereist. Oudere versies zonder fatsoenlijke PTRACE_GETREGS-ondersteuning werken niet.
- Op s390 en s390x is linux kernel & gt; = 2.6.27 vereist. Oudere versies zonder fatsoenlijke PTRACE_GETREGSET-ondersteuning werken niet.
Wat is nieuw in versie 4.9:
- Veranderingen in gedrag:
- Uitgeschakelde OABI-ondersteuning standaard op ARM EABI-systemen, optie --enable-arm-oabi toegevoegd om deze tijdens de configuratietijd in te schakelen.
- Verbeteringen:
- Experimentele optie -k toegevoegd om stapeltracering af te drukken na elke tracerende syscall.
- Toegevoegd -w optie om statistieken te produceren op syscall latency. (adressen Debian-bug # 457497).
- Ondersteuning van ARC-architectuur toegevoegd.
- PTRACE_GETREGS API-ondersteuning toegevoegd op PowerPC.
- Verbeterde ondersteuning voor Bionic libc en musl libc.
- Verbeterde tracering van x86-persoonlijkheidsprocessen op x86_64 en x32.
- Verbeterde tracering van ARM-persoonlijkheidsprocessen op AArch64.
- Verbeterde 32/64-bits persoonlijkheidsdetectie op PowerPC.
- Implementatie van decodering van add_key, ioprio_get, ioprio_set, kexec_load, keyctl, renameat2 en request_key syscalls.
- Robustified decoding van select, pselect en io_submit syscalls.
- Verbeterde decodering van delete_module, fanotify_init, fanotify_mark, fcntl, setdomainname, sethostname, setns en sync_file_range syscalls.
- Verbeterde decodering van signaalbitmaskers.
- Verbeterde decodering van bestandsdescriptors.
- Verbeterde siginfo_t-decodering.
- Verbeterde PF_NETLINK-decodering.
- Bijgewerkte CLOCK_ * constanten (adressen Fedora-bug # 1088455).
- Nieuwe syscall-items toegevoegd om overeen te komen met Linux 3.16.
- Bugfixes:
- Shmat en shmdt toegevoegd aan de set geheugenmapping-gerelateerde syscalls.
- Vaste verwijdering van gestopte processen opgelost.
- Vaste fanotify_mark-decodering op 32-bits architecturen.
- Vaste offset-decodering in preadv en pwritev syscalls.
- Fixed select decoding for glibc in de modus _FORTIFY_SOURCE.
- Vaste decodering van epoll_ctl syscall met EPOLL_CTL_DEL-argument.
- Vaste build wanneer en conflict (adressen Fedora bug # 993384).
- Diverse correcties op de handleiding. (Adressen Debian bug # 725987).
Wat is nieuw in versie 4.8:
- Veranderingen in gedrag:
- In het geval van normale strace-terminatie, wanneer de traceeruitgang wordt omgeleid naar een pijp, sluit strace nu deze en wacht hij op de beëindiging van het pijpproces vóór het verlaten.
- Verbeteringen:
- Tracing geïmplementeerd met behulp van PTRACE_SEIZE API (indien beschikbaar).
- Betrouwbaarder PTRACE_GETREGSET-gebaseerde procespersoonlijkheidsdetectie geïmplementeerd op x86-64 en x32 (indien beschikbaar).
- Toegevoegd -e trace = geheugenoptie voor het traceren van geheugenmapping-gerelateerde syscalls.
- Gedocumenteerde optie-b.
- Toegestane exit-statusberichten worden onderdrukt door tweemaal de optie -q te geven.
- AArch64-architectuurondersteuning toegevoegd (adressen Debian-bug # 693074 en Fedora-fout # 969858).
- Ondersteuning toegevoegd voor OpenRISC 1000, Meta en Xtensa-architecturen.
- Ondersteuning voor tilegx-persoonlijkheid toegevoegd voor Tile.
- Verbeterde ondersteuning van NOMMU-architecturen.
- Verbeterde decodering van getdents, mmap, perf_event_open, ptrace en quotactl-syscalls.
- Nieuwe syscall-items toegevoegd om overeen te komen met Linux 3.9.
- Regenereerde de lijst met veelgebruikte ioctl-namen uit Linux 3.9.
- De lijst met errno-constanten bijgewerkt.
- Bijgewerkte lijsten met AF_ *, MADV_ *, MAP_ *, MSG_ *, MS_ *, PF_ *, PR_ *, PTRACE_O_ * en TCP_ * constanten.
- Implementatie van decodering van UBI ioctls.
- Overbodig verwijderd & quot; * 32 & quot; ioctl-namen.
- Bugfixes:
- Fixed ERESTARTNOINTR lekt naar gebruikersruimte op oude kernels (adressen Fedora bug # 659382).
- Vaste kernelversie string-parsing (adressen Debian-bug # 702309).
- Vast decoderen van * xattr syscalls (adressen Fedora bug # 885233).
- Vaste afhandeling van bestanden met 64-bits inode-nummers door 32-bit strace (adressen Fedora bug # 912790).
- Vaste traceringsvorken op SPARC.
- Fixed decoding van fadvise64, fallocate, ftruncate64, io_submit, pread, preadv, pwrite, pwritev, readahead, sigaltstack, sync_file_range, sysctl en truncate64 syscalls.
- Vaste categorieën van meerdere syscalls op de meeste ondersteunde architecturen.
- Vaste decodering van niet-native 32-bit personality recv [m] msg-syscalls.
- Vaste decodering van meerdere 32-bits personality-syscalls op x32.
- Vaste decodering van lange lange syscall-argumenten op ARM, MIPS / o32, PowerPC, S390x en Tile-architecturen.
- Oplossing voor semtimedop-decodering op S390x.
- Vaste sram_alloc-decodering op Blackfin.
- Vaste build wanneer process_vm_readv een steek is
- Fixed build met oudere versies van libaio.h.
Wat is nieuw in versie 4.7:
- Dit is een stabiele release, met de gebruikelijke bugfixes, verbeterde ondersteuning voor nieuwe Linux-kernels en andere verbeteringen.
Wat is nieuw in versie 4.6:
- Dit is een stabiele release, met de gebruikelijke bugfixes, verbeterde ondersteuning voor nieuwe Linux-kernels en andere verbeteringen, waaronder een nieuwe methode voor het volgen van clone, fork en vfork-syscalls met behulp van de expliciete faciliteiten van de Linux-kernel voor het traceren van threads en onderliggende processen.
Wat is nieuw in versie 4.5.20:
- Verbeteringen:
- Implementatie van decodering van nieuwe linux-syscalls: inotify_init1, recvmmsg.
- Basic-decodering van nieuwe linux-syscalls geïmplementeerd: preadv, pwritev, rt_tgsigqueueinfo, perf_event_open.
- Verbeterde decodering van recent toegevoegde syscalls op niet-x86-architecturen door een bare-decoder te vervangen door uitgebreide parsers die eerder zijn ingeschakeld voor x86 / x86-64.
- Geïmplementeerde -C-optie om reguliere en -c uitvoer te combineren. (Adressen Debian bug # 466196)
- Verbeterde decodering van mbind en mremap-syscalls.
- Enhanced SOL_PACKET socket options decoding.
- Geregenereerde lijst met ioctl-namen uit linux 2.6.33.
- Ondersteuning voor TILE-architectuur toegevoegd.
- Bugfixes:
- Fixed build met Linux kernel headers 2.6.32-rc5 +. (Adressen Debian-bug # 560516 en Fedora-bug # 539044)
- Vaste build op mips.
- Vaste afhandeling van Linux-systemen zonder struct statfs64.
- Vaste rapportagesignaalmasker door sigreturn op powerpc.
- Potentiële stackbufferoverloop in geselecteerde decoder opgelost. (Adressen Fedora bug # 556678)
- Gecorrigeerde msgsnd indirecte ipccall-decodering.
- Gecorrigeerd decoderen van 64-bits syscalls. (Adressen Debian bug # 570603)
- Gecorrigeerd krijgtockopt-decodering op architecturen waarbij sizeof (lang) & gt; sizeof (int). (Adressen Debian bug # 494844)
- Gecorrigeerd decoderen van epoll_pwait. (Adressen Debian-bug # 513014)
- Gecorrigeerde afhandeling van gedode threads.
Reacties niet gevonden