Strace este un software open source și distribuit gratuit destinat dezvoltatorilor și administratorilor de sistem, oferind un sistem de urmărire a apelurilor implementat în C și proiectat să funcționeze exclusiv sub sistemele de operare GNU / Linux.
Programul este un utilitar de depanare, instrucțiuni și diagnostice foarte util, care poate aduna toate apelurile de sistem generate de un program sau un proces și imprimă o urmă. Acesta este un program de linie de comandă care poate fi folosit numai dintr-un mediu de consolă sau printr-o aplicație emulator terminal.
Instrumentul poate fi folosit de către diagnostici, depanatori, precum și de administratorii de sistem care doresc o soluție inestimabilă pentru rezolvarea problemelor cu programe cu surse închise. Este scris de Dmitry V. Levin, Roland McGrath și Wichert Akkerman.
Opțiuni de linie de comandă
Ca orice alt software de linie de comandă, strace oferă o mare varietate de opțiuni de linie de comandă care permit utilizatorului să utilizeze cu ușurință toate funcționalitățile și caracteristicile sale pentru a-și îndeplini sarcinile. Toate opțiunile din linia de comandă pot fi vizualizate dintr-o privire, prin rularea funcției "help" - help; comandă.
Printre opțiunile cele mai interesante din linia de comandă se numără suportul pentru numărarea convorbirilor, apelurile și erorile pentru fiecare sistem, suportul pentru sinteza latenței syscall, suportul pentru trasarea accesului la o anumită cale, suportul pentru activarea debugului la stderr, precum și suport pentru rularea procesului de trasare ca nepoț detașat, nu ca părinte.
În plus, veți putea trimite informații de urmărire către un anumit fișier în loc de stderr, pentru a seta cheltuielile de urmărire a sistemelor de urmărire la o schemă de utilizare, pentru a seta un fișier PID pentru procesul de urmărire, pentru a limita lungimea șirurilor de imprimare pentru a schimba caracterele, pentru a rula comenzi ca nume de utilizator setgid și / sau setuid, și pentru a detașa pe un sistem specific.
Noțiuni de bază cu strace
Strace este distribuit doar ca o sursă de tarball, dar poate fi ușor instalat pe numeroase distribuții de Linux din bazele de date principale ale acestora. Pentru a le instala din surse, descărcați ultima versiune de la Softoware, salvați arhiva într-o locație la alegere și despachetați-o.
Deschideți o aplicație Terminal, accesați locația fișierelor arhivate extrase (de exemplu, cd /home/softoware/strace-4.9), executați ./configure && make & rsquo; comanda pentru a configura și a compila strace, apoi executați "install install"; comanda ca root sau sudo make install & rsquo; comanda ca utilizator privilegiat pentru a instala sistemul de strace la scară largă.
Ce este nou în această ediție:
- Îmbunătățiri:
- A fost adăugată opțiunea -yy pentru a imprima protocolul și informațiile de adresă asociate cu descriptorii socket.
- Extended "-e read = set" și "-e scriu = set" opțiuni pentru a acoperi mesajele sendmsg, recvmsg, sendmmsg și recvmmsg.
- Implementarea completă a decodării pe 32 de biți a comenzilor ioctl (adresa bug-ului Debian # 692913 și bug-ul Fedora # 902788).
- A fost implementată suportul API PTRACE_GETREGS pe ia64.
- Implementarea suportului API PTRACE_GETREGS pe mips.
- A fost implementat suportul API PTRACE_GETREGSET pe s390 / s390x.
- Implementarea decodificării sistemelor getrandom și seccomp.
- Implementat decodarea completă a seturilor de capabilități pe 64 de biți.
- Implementarea decodificării tuturor comenzilor prctl.
- Decodarea implementată a comenzilor ioctl parametrizate.
- Decodarea implementată a comenzilor de evtev ioctl.
- Implementarea decodificării comenzilor v4l ioctl.
- Implementarea decodificării comenzilor SG_IO v4 ioctl.
- Decodarea implementată a comenzilor FIFREEZE / FITHAW / FITRIM ioctl.
- Decodarea implementată a steagurilor FALLOC_FL_ *.
- Decodarea implementată a mască de semnal rt_sigreturn pe aarch64, x32 și x86_64.
- Decodor socket îmbunătățit pentru a suporta prizele bluetooth.
- Decodificarea îmbunătățită a comenzilor ioctl nelistate.
- Decodificarea îmbunătățită a sistemelor getockopt și setsockopt.
- Decodificarea îmbunătățită a sistemului sysinfo.
- Decodificarea îmbunătățită a structului cmsghdr
- Decodificarea îmbunătățită a stării de așteptare.
- Sprijin aio îmbunătățit pe arhitecturi non-x86 utilizând libaio.h extern
- S-a adăugat O_TMPFILE în lista de steaguri recunoscute în mod deschis.
- A fost actualizată lista constantelor de tip sistem de sistem care este utilizată în decodarea sistemelor familiei statfs.
- Liste actualizate ale constantelor CAP_ *, PR_ *, PTRACE_ *, SCHED_ *, SO_ *, SOL_ *, SWAP_FLAG_ * și TFD_ *.
- Liste actualizate de constante de semnal de la Linux 3.19.
- Liste actualizate de errno constants din Linux 3.19.
- Liste actualizate de comenzi ioctl din Linux 3.9.
- S-au adăugat noi intrări de sistem pentru a se potrivi Linux 3.19.
- Remedierea erorilor:
- S-au rezolvat diferite erori în cartografiere între numerele de sistem și informațiile asociate, cum ar fi numărul de argumente syscall, numele sistemelor de sistem și decodorul sistem.
- Probleme citate fixe în descriptori de imprimare, nume de fișiere, nume de interfețe de rețea, membri struct utsname, nume de dispozitiv / volume ale comenzilor BLK * ioctl.
- Decodificarea fixă uid_t / git_t.
- Probleme fixe de ieșire din limite fixe în decodoarele getdents / getdents64.
- Trunchierea unor potențiale open flags fixe pe unele arhitecturi.
- Decodarea fixă a structului ifreq.ifr_name.
- Decodificarea fixă a comenzii SIOCSIFNAME ioctl.
- Decodarea fixă a semnelor RENAME_ * renameat2.
- Decodarea fixă a structurilor temporale UTIME_NOW / UTIME_OMIT.
- Decodarea fixă a subcalls indirect ipc pe unele arhitecturi.
- Decodificarea fixă a sistemului fanotify_mark la arhitecturile pe 32 de biți.
- Decodarea fixă a structurilor de stat pe 32 de biți pe arhitecturi pe 64 de biți.
- Decodificarea fixă a structurilor cmsghdr pe 32 de biți pe arhitecturi pe 64 de biți.
- Decodarea fixă a decalării preadv / pwritev pe 32 biți pe arhitecturi pe 64 de biți.
- Decodarea fixă a mascajului de semnal sigreturn / rt_sigreturn pe ia64, ppc, ppc64, sparc, sparc64, mips și s390.
- Ieșire indicatoare de instrucțiuni fixe (opțiunea -i) pe arhitecturi care suportă mai multe personalități.
- Comportamentul fix al lui "-e read = set" și "-e scriu = set" atunci când seturile de citire și scriere se intersectează.
- Se construiește fix pe sisteme în care sigaction struct nu are membru sa_restorer.
- Construiți cu ajutorul uclibc și lib libc.
- Portabilitate:
- Linux kernel & gt; = 2.5.46 este necesar. Versiunile mai vechi fără un suport decent PTRACE_SETOPTIONS nu vor funcționa.
- Pe mips, este necesar un kernel linux> = 2.6.15. Versiunile mai vechi, fără o asistență decentă PTRACE_GETREGS, nu vor funcționa.
- La s390 și s390x, este necesar linux kernel> 2.6.27. Versiunile mai vechi fără o asistență decentă PTRACE_GETREGSET nu vor funcționa.
Ce este nou în versiunea 4.9:
- Schimbări de comportament:
- Suportul OABI dezactivat pe sistemele ARM EABI în mod implicit, a adăugat --ableable-arm-oabi opțiune pentru a activa configurarea timpului.
- Îmbunătățiri:
- A adăugat opțiunea experimentală -k pentru a imprima urmărirea stivei după fiecare sistem de urmărire.
- A fost adăugată opțiunea -w pentru a produce statistici privind latența syscall. (se referă la eroarea Debian # 457497).
- A fost adăugat suport pentru arhitectura ARC.
- A fost adăugat suportul API PTRACE_GETREGS pe PowerPC.
- Sprijin îmbunătățit pentru Bionic libc și musl libc.
- Urmărirea sporită a proceselor de personalitate x86 pe x86_64 și x32.
- Îmbunătățirea urmăririi proceselor de personalitate ARM pe AArch64.
- Detectarea personalizată 32 / 64bit pe PowerPC.
- Implementarea decodificării sistemelor add_key, ioprio_get, ioprio_set, kexec_load, keyctl, renameat2 și request_key.
- Decodificarea robusificată a sistemelor selectate, pselect și io_submit.
- Decodificarea îmbunătățită a sistemelor delete_module, fanotify_init, fanotify_mark, fcntl, setdomainname, sethostname, setns și sync_file_range.
- Decodificarea îmbunătățită a maselor bitmapsal.
- Decodificarea îmbunătățită a descriptorilor de fișiere.
- Decodificarea siginfo_t îmbunătățită.
- Decodificarea PF_NETLINK îmbunătățită.
- Actualizate CLOCK_ * constante (adrese Fedora bug # 1088455).
- Au fost adăugate noi intrări de sistem pentru a se potrivi Linux 3.16.
- Remedierea erorilor:
- S-au adăugat shmat și shmdt la setul de sisteme de mapare a memoriei.
- Deconectarea fixă de procesele oprite.
- Decodificarea fix fanotify_mark pe arhitecturi de 32bit.
- Decodificarea decalajului fix în sistemele preadv și pwritev.
- Decodare fixă selectată pentru glibc în modul _FORTIFY_SOURCE.
- Decodificarea fixă a sistemului epoll_ctl cu argumentul EPOLL_CTL_DEL.
- Construiți fix și conflicte (adresa Fedora bug # 993384).
- Diferite corecții în pagina manuală. (Adrese de eroare Debian # 725987).
Ce este nou în versiunea 4.8:
- Schimbări de comportament:
- În cazul terminării normale a stracării, atunci când ieșirea de urmărire este redirecționată către o țeavă, strația o închide acum și așteaptă terminarea procesului de țeavă înainte de ieșire.
- Îmbunătățiri:
- Implementarea urmăririi utilizând API-ul PTRACE_SEIZE (dacă este disponibil).
- A fost implementată o metodă de detectare a personalității bazată pe PTRACE_GETREGSET mai sigură pe x86-64 și x32 (dacă este disponibilă).
- Adăugat -e trace = opțiune de memorie pentru urmărirea sistemelor de mapare a memoriei asociate.
- Opțiunea documentată -b.
- Mesajele de stare de ieșire permise să fie suprimate prin acordarea opțiunii -q de două ori.
- A fost adăugat suport pentru arhitectură AArch64 (adresa bug-ului Debian # 693074 și bug-ul Fedora # 969858).
- Suport adăugat pentru arhitecturile OpenRISC 1000, Meta și Xtensa.
- A fost adăugat suportul de personalitate Tilegx pentru Tile.
- Suport îmbunătățit al arhitecturilor NOMMU.
- Decodificarea imbunatatita a sistemelor getdents, mmap, perf_event_open, ptrace si sistemcact.
- Au fost adăugate noi intrări de sistem pentru a se potrivi cu Linux 3.9.
- Regenerarea listei de nume comune de ioctl din Linux 3.9.
- A fost actualizată lista constantelor errno.
- Liste actualizate ale constantelor AF_ *, MADV_ *, MAP_ *, MSG_ *, MS_ *, PF_ *, PR_ *, PTRACE_O_ * și TCP_ *.
- Decodificarea implementată a IOctls UBI.
- Eliminat redundant "* 32" numele ioctl.
- Remedierea erorilor:
- Fixed ERESTARTNOINTR scurgeri în spațiul utilizatorilor pe kerneluri vechi (adresa Fedora bug # 659382).
- Parsingul șirului de eliberare a kernelului fix (adresa Debian bug # 702309).
- Decodarea fixă a sistemelor * xattr (adrese Fedora bug # 885233).
- Manipularea fixă a fișierelor cu numere de inode pe 64 de biți de 32-bit strace (adrese Fedora bug # 912790).
- furci fixe fixe pe SPARC.
- Decodificarea fixă a sistemelor fadvise64, fallact, ftruncate64, io_submit, preadv, pwrite, pwritev, readahead, sigaltstack, sync_file_range, sysctl și truncate64.
- Categorii fixe de sisteme multiple pe majoritatea arhitecturilor acceptate.
- Decodificarea fixă a sistemelor recv [m] msg non-native pe 32 de biți.
- Decodificarea fixă a sistemelor multiple de 32 de biți de personalitate pe x32.
- Decodificarea fixă a argumentelor lungi de lungă durată pe arhitecturile ARM, MIPS / o32, PowerPC, S390x și Tile.
- Decodificarea fixă a semnalelor pe S390x.
- Decodarea sram_alloc fixată pe Blackfin.
- Construiți fix când process_vm_readv este o înjunghiere.
- Construiți cu versiuni mai vechi ale libaio.h
Ce este nou în versiunea 4.7:
- Aceasta este o versiune stabilă, cu bugfix-uri obișnuite, suport îmbunătățit pentru kernel-uri proaspete Linux îmbunătățiri.
Ce este nou în versiunea 4.6:
- Aceasta este o versiune stabilă, pentru kernel-uri proaspete de Linux și alte îmbunătățiri, inclusiv o nouă metodă de urmărire a sistemelor clone, fork și vfork, folosind facilitățile explicite ale kernelului Linux pentru urmărirea creării de fire și procese copil.
Ce este nou în versiunea 4.5.20:
- Îmbunătățiri:
- Decodarea implementată a sistemelor linux noi: inotify_init1, recvmmsg.
- Implementat decodarea de bază a sistemelor linux noi: preadv, pwritev, rt_tgsigqueueinfo, perf_event_open.
- Decodificarea îmbunătățită a sicalelor adăugate recent pe arhitecturi non-x86 prin înlocuirea unui decoditor gol cu parser elaborat anterior pentru x86 / x86-64.
- Implementează opțiunea -C pentru a combina ieșirea obișnuită și -c. (Adresează bug-ul Debian # 466196)
- Decodificarea îmbunătățită a sistemelor mbind și mremap.
- Decodificarea opțiunilor de soclu SOL_PACKET îmbunătățită.
- Lista de nume reglate de nume ioctl de la linux 2.6.33.
- A fost adăugat suport pentru arhitectura TILE.
- Remedierea erorilor:
- Construiți fix cu anteturile de kernel Linux 2.6.32-rc5 +. (Adresează bug-ul Debian # 560516 și bug-ul Fedora # 539044)
- Construiți fix pe mips.
- Manipularea fixă a sistemelor Linux fără struct stats64.
- Masca semnalului de raportare fix de sigreturn pe powerpc.
- Suprasarcină tampon de stivă potențială fixă în decodor selectat. (Adrese bug Fedora # 556678)
- Decodificarea indirectă ipccall corectată.
- Decodificarea corectă a sistemelor 64bit. (Adrese de eroare Debian # 570603)
- Decodificarea getockopt corectată pe arhitecturi unde sizeof (long) & gt; sizeof (int). (Adresează bug-ul Debian # 494844)
- Decodificarea corectă a epoll_pwait. (Adrese bug-ul Debian # 513014)
- Manipularea corectă a firelor ucise.
Comentariile nu a fost găsit