strace
strace software | |
---|---|
Tip | Depanator |
Dezvoltator | Paul Kranenburg, Dmitry Levin |
Ultima versiune | 4.7 (2 mai 2012 | )
Sistem de operare | Linux FreeBSD (nu este listat ) |
Limba | C. |
Licență | BSD ( licență gratuită ) |
Site-ul web | strace.io/ |
strace este un utilitar de depanare pentru Linux și alte sisteme asemănătoare Unix , care examinează apelurile de sistem utilizate de un program și toate semnalele pe care le primește, similar cu utilitarul de blocare găsit pe alte sisteme Unix. Acest lucru este posibil printr-o caracteristică numită ptrace .
Cygwin oferă un utilitar similar.
Utilizare
Cea mai obișnuită utilizare este să porniți un program folosind strace, care imprimă pe ecran lista apelurilor de sistem efectuate de program. Acest lucru este util în cazul în care programul merge frecvent accident , sau nu ia comportamentul așteptat; de exemplu, utilizarea strace poate dezvălui că programul încearcă să acceseze un fișier care nu există sau care nu poate fi citit.
Alternativ, semnalizatorul -p este utilizat pentru a lega strace la un proces deja în desfășurare. Acest lucru este util dacă un proces nu mai răspunde și poate dezvălui, de exemplu, că procesul este blocat în așteptarea unei conexiuni la rețea.
Deoarece strace arată doar detalii despre apelurile de sistem, nu poate fi folosit pentru a detecta toate problemele pe care le poate dezvălui un depanator precum GNU Debugger (gdb). Cu toate acestea, este mai ușor de utilizat decât un depanator și este un instrument extrem de util pentru administratorii de sistem.
Eșantion de ieșire
Urmează un exemplu tipic de ieșire a comenzii strace:
open (".", O_RDONLY | O_NONBLOCK | O_LARGEFILE | O_DIRECTORY | O_CLOEXEC) = 3 fstat64 (3, {st_mode = S_IFDIR | 0755, st_size = 4096, ...}) = 0 fcntl64 (3, F_GETFD) = 0x1 (semnalizează FD_CLOEXEC) getdents64 (3, / * 18 intrări * /, 4096) = 496 getdents64 (3, / * 0 intrări * /, 4096) = 0 închidere (3) = 0 fstat64 (1, {st_mode = S_IFIFO | 0600, st_size = 0, ...}) = 0 mmap2 (NULL, 4096, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0) = 0xb7f2c000 write (1, "autofs \ nbackups \ ncache \ nflexlm \ ngames" ..., 86autofsA
Fragmentul de mai sus este doar o mică parte din ieșirea strace când se execută cu comanda ls . Arată că directorul de lucru este deschis și conținutul acestuia este citit. Lista de fișiere rezultată este scrisă la ieșirea standard .
Alte instrumente
Diferite sisteme de operare oferă alte instrumente similare și uneori mai puternice, de exemplu:
- Linux are ltrace , care poate înregistra apeluri de sistem și bibliotecă
- Distribuțiile Linux după 2006 au SystemTap
- Linux are, de asemenea, trace-cmd și KernelShark , care extind funcțiile ftrace
- Solaris are fermă și DTrace
- AIX furnizează comanda Truss
- HP-UX oferă comanda tusc
- FreeBSD oferă comanda truss , ktrace și DTrace
- NetBSD oferă ktrace și DTrace
- OpenBSD folosește ktrace și kdump
- macOS oferă ktrace (până la versiunea 10.4 ), DTrace (de la Solaris) și dtruss de la versiunea 10.5 și ulterioare. [1]
- Microsoft Windows are un instrument similar, StraceNT , scris de Pankaj Garg. [2]
Notă
- ^ (RO) dtruss (1m) Pagina manuală OS X pe developer.apple.com, 17 iunie 2005. Accesat pe 29 martie 2013.
- ^ (EN) StraceNT - Un sistem de urmărire a apelurilor pentru Windows pe intellectualheaven.com. Adus pe 29 martie 2013 (arhivat din original la 11 mai 2013) .
Elemente conexe
linkuri externe
- ( RO ) Pagina manuală , la linuxmanpages.com .
- ( EN ) Articol recenzii despre articol despre strace , la osreviews.net .
- ( RO ) Pagina proiectului (Sourceforge) , pe sourceforge.net .