EnglezăFrancezăSpaniolă

Ad


Favicon OnWorks

strace64 - Online în cloud

Rulați strace64 în furnizorul de găzduire gratuit OnWorks prin Ubuntu Online, Fedora Online, emulator online Windows sau emulator online MAC OS

Aceasta este comanda strace64 care poate fi rulată în furnizorul de găzduire gratuit OnWorks folosind una dintre multiplele noastre stații de lucru online gratuite, cum ar fi Ubuntu Online, Fedora Online, emulator online Windows sau emulator online MAC OS

PROGRAM:

NUME


strace - urmăriți apelurile și semnalele sistemului

REZUMAT


strace [-CdffhikqrtttTvVxxy] [-In] [-bexecve] [-eexpres]... [-acoloană]
[-ofişier] [-sstrsize] [-Pcale] ... -ppid... / [-D] [-Ea fost[=val]]...
[-unume de utilizator] comandă [args]

strace -c[df] [-In] [-bexecve] [-eexpres]... [-Odeasupra] [-Sfiltrează după]
-ppid... / [-D] [-Ea fost[=val]]... [-unume de utilizator] comandă [args]

DESCRIERE


În cel mai simplu caz strace rulează cele specificate comandă până când iese.
Interceptează și înregistrează apelurile de sistem care sunt apelate de a
proces și semnalele primite de un proces. Numele lui
fiecare apel de sistem, argumentele și valoarea returnată sunt imprimate
eroare standard sau la fișierul specificat cu -o opțiune.

strace este un instrument util de diagnosticare, instruire și depanare.
Administratorii de sistem, diagnosticienii și depanatorii îl vor găsi
de neprețuit pentru rezolvarea problemelor cu programele pentru care este sursa
nu sunt ușor disponibile, deoarece nu trebuie să fie recompilate în ordine
pentru a le urmări. Studenții, hackerii și cei prea curioși vor găsi asta
se pot învăța multe despre un sistem și apelurile sale de sistem prin
urmărirea chiar și a programelor obișnuite. Și programatorii vor găsi asta de atunci
apelurile de sistem și semnalele sunt evenimente care au loc la utilizator/kernel
interfață, o examinare atentă a acestei limite este foarte utilă pentru bug
izolarea, verificarea sanatatii si incercarea de a surprinde conditiile de cursa.

Fiecare linie din urmărire conține numele apelului de sistem, urmat de acesta
argumente în paranteze și valoarea returnată a acesteia. Un exemplu de la
Stracing comanda "cat /dev/null" este:

open("/dev/null", O_RDONLY) = 3

Erorile (de obicei o valoare returnată de -1) au simbolul errno și eroare
șir atașat.

open ("/ foo / bar", O_RDONLY) = -1 ENOENT (Nu există un astfel de fișier sau director)

Semnalele sunt tipărite ca simbol de semnal și structură siginfo decodificată. Un
extras din stracing și întreruperea comenzii „sleep 666” este:

sigsuspend([]
--- SIGINT {si_signo=SIGINT, si_code=SI_USER, si_pid=...} ---
+++ ucis de SIGINT +++

Dacă se execută un apel de sistem și, între timp, se execută altul
apelat dintr-un fir/proces diferit atunci strace va încerca să păstreze
ordinea acelor evenimente și marchează apelul în curs ca fiind
neterminat. Când apelul revine, acesta va fi marcat ca reluat.

[pid 28772] select(4, [3], NULL, NULL, NULL
[pid 28779] clock_gettime(CLOCK_REALTIME, {1130322148, 939977000}) = 0
[pid 28772] <... select resumed> ) = 1 (în [3])

Întreruperea unui apel de sistem (repornit) prin livrarea unui semnal este
procesate diferit, deoarece nucleul încheie apelul de sistem și, de asemenea
aranjează reexecutarea imediată a acestuia după finalizarea tratatorului de semnal.

citit(0, 0x7ffff72cf5cf, 1) = ? ERESTARTSYS (De repornit)
--- SIGALRM ... ---
rt_sigreturn(0xe) = 0
citește(0, "", 1) = 0

Argumentele sunt tipărite în formă simbolică cu pasiune. Acest exemplu
arată shell-ul care efectuează redirecționarea ieșirii „>>xyzzy”:

deschide("xyzzy", O_WRONLY|O_APPEND|O_CREAT, 0666) = 3

Aici cel de-al treilea argument al deschiderii este decodat prin descompunerea steagului
argument în trei constituenți biți-SAU și tipărirea modului
valoare în octal prin tradiție. Acolo unde utilizarea tradițională sau nativă diferă
de la ANSI sau POSIX, sunt preferate ultimele forme. In unele cazuri,
strace ieșirea s-a dovedit a fi mai lizibilă decât sursa.

Indicatorii de structură sunt dereferențiați și membrii sunt afișați ca
adecvat. În toate cazurile, argumentele sunt formatate în cel mai asemănător C
modă posibilă. De exemplu, esența comenzii "ls -l
/dev/null" este capturat ca:

lstat("/dev/null", {st_mode=S_IFCHR|0666, st_rdev=makedev(1, 3), ...}) = 0

Observați cum este dereferențiat argumentul „struct stat” și cum fiecare
membru este afișat simbolic. În special, observați cum
Membrul st_mode este decodat cu atenție într-un SAU pe biți de simbol și
valori numerice. De asemenea, observați în acest exemplu că primul argument pentru
lstat este o intrare la apelul de sistem, iar al doilea argument este an
ieșire. Deoarece argumentele de ieșire nu sunt modificate dacă apelul de sistem
eșuează, este posibil ca argumentele să nu fie întotdeauna dereferențiate. De exemplu, reîncercați
exemplul „ls -l” cu un fișier inexistent produce următoarele
linia:

lstat("/foo/bar", 0xb004) = -1 ENOENT (Nu există un astfel de fișier sau director)

În acest caz, lumina verandă este aprinsă, dar nimeni nu este acasă.

Indicatorii de caractere sunt dereferențiați și imprimați ca șiruri C. Non-
caracterele de tipărire în șiruri de caractere sunt în mod normal reprezentate prin C obișnuit
coduri de evadare. Doar primul strsize (32 implicit) octeți de șiruri
sunt tipărite; șirurile mai lungi au o elipsă adăugată după
citat de închidere. Iată o linie de la "ls -l" unde getpwuid bibliotecă
rutina citește fișierul cu parole:

read(3, "root::0:0:System Administrator:/"..., 1024) = 422

În timp ce structurile sunt adnotate folosind acolade, indicatori simple și
tablourile sunt tipărite folosind paranteze pătrate separate prin virgulă
elemente. Iată un exemplu din comanda „id” pe un sistem cu
ID-uri suplimentare de grup:

getgroups(32, [100, 0]) = 2

Pe de altă parte, seturile de biți sunt, de asemenea, afișate folosind paranteze drepte dar
elementele setului sunt separate doar printr-un spațiu. Aici este coaja
pregătirea pentru a executa o comandă externă:

sigprocmask(SIG_BLOCK, [CHLD TTOU], []) = 0

Aici al doilea argument este un set de biți de două semnale, SIGCHLD și
SIGTTOU. În unele cazuri, setul de biți este atât de plin încât imprimarea
elementele nesetate sunt mai valoroase. În acest caz, setul de biți este prefixat
printr-o tildă ca aceasta:

sigprocmask(SIG_UNBLOCK, ~[], NULL) = 0

Aici al doilea argument reprezintă setul complet al tuturor semnalelor.

OPŢIUNI


-c Numărați timpul, apelurile și erorile pentru fiecare apel de sistem
și raportați un rezumat la ieșirea din program. Pe Linux,
aceasta încearcă să arate timpul sistemului (timpul CPU petrecut
rulând în nucleu) independent de ceasul de perete
timp. Dacă -c este folosit cu -f or -F (mai jos), numai
sunt păstrate totalurile agregate pentru toate procesele urmărite.

-C Aprecieri -c dar, de asemenea, imprimați o ieșire obișnuită în timp ce
procesele rulează.

-D Rulați procesul de urmărire ca un nepot detașat, nu ca
părinte al traseului. Acest lucru reduce vizibilul
efectul strace prin păstrarea urmei în mod direct
copil al procesului de apelare.

-d Afișați o ieșire de depanare a strace însuși pe
eroare standard.

-f Urmăriți procesele copil așa cum sunt create de
procesele urmărite în prezent ca urmare a
furculiţă(2), vfurca(2) și clona(2) apeluri de sistem. Notă
acea -p PID -f va atașa toate firele de proces
PID dacă este multi-threaded, nu numai thread with
thread_id = PID.

-ff În cazul în care -o nume de fișier opțiunea este în vigoare, fiecare
în care este scrisă urma proceselor nume de fișier.pid unde pid
este ID-ul numeric al fiecărui proces. Aceasta este
incompatibil cu -c, deoarece niciun proces nu contează
sunt tinute.

-F Această opțiune este acum învechită și are același lucru
funcţionalitate ca -f.

-h Tipăriți rezumatul ajutorului.

-i Tipăriți indicatorul de instrucțiuni la momentul
apel de sistem.

-k Imprimați traseul stivei de execuție a urmăririi
procesele după fiecare apel de sistem (experimental).
Această opțiune este disponibilă numai dacă strace este construit
cu libunwind.

-q Suprimați mesajele despre atașare, detașare etc.
Acest lucru se întâmplă automat când ieșirea este redirecționată
într-un fișier și comanda este rulată direct în loc de
atasarea.

-qq Dacă este dat de două ori, suprimați mesajele despre ieșirea procesului
stare.

-r Imprimați un marcaj de timp relativ la intrarea în fiecare sistem
apel. Aceasta înregistrează diferența de timp dintre
începutul apelurilor de sistem succesive.

-t Prefixați fiecare linie a urmei cu ora din zi.

-tt Dacă este dat de două ori, ora tipărită va include
microsecunde.

-ttt Dacă este dat de trei ori, ora tipărită va include
microsecunde și partea de început va fi imprimată
ca număr de secunde de la epocă.

-T Afișați timpul petrecut în apelurile de sistem. Aceasta înregistrează
diferența de timp dintre început și
sfârşitul fiecărui apel de sistem.

-w Rezumați diferența de timp dintre început
și sfârșitul fiecărui apel de sistem. Valoarea implicită este să
rezuma ora sistemului.

-v Imprimați versiuni neabreviate ale mediului, statisticilor,
termios, etc. apeluri. Aceste structuri sunt foarte
frecvente în apeluri și astfel se afișează comportamentul implicit
un subset rezonabil de membri ai structurii. Foloseste asta
opțiune pentru a obține toate detaliile sângeroase.

-V Tipăriți numărul versiunii de strace.

-x Tipăriți toate șirurile non-ASCII în șir hexazecimal
format.

-xx Tipăriți toate șirurile în format hexazecimal.

-y Tipăriți căile asociate cu descriptorul de fișier
argumente.

- da Tipăriți perechi ip:port asociate fișierului socket
descriptori.

-a coloană Aliniați valorile returnate într-o anumită coloană (implicit
coloana 40).

-b syscall Dacă este atins apelul de sistem specificat, detașați de urmărit
proces. Momentan, numai execve syscall este
sprijinit. Această opțiune este utilă dacă doriți
urmărirea procesului cu mai multe fire și, prin urmare, necesită
-f, dar nu vreau să-i urmăresc (potențial foarte
complex) copii.

-e expres O expresie calificativă care modifică ce evenimente
a urmări sau cum să le urmărească. Formatul
expresia este:

[calificativ=][!]valoare1[,valoare2] ...

Unde calificativ este unul dintre urmări, abrev, prolix,
crud, semnal, citit, Sau scrie și valoare este
simbol sau număr dependent de calificativ. Implicit
calificativul este urmări. Folosind un semn de exclamare
neagă setul de valori. De exemplu, -e deschide
înseamnă la propriu -e urmări=deschide care la rândul său înseamnă
urma doar pe deschide apel de sistem. În contrast,
-e urmări=!deschide înseamnă a urmări fiecare apel de sistem
cu excepția deschide. În plus, valorile speciale toate
și nici unul au semnificațiile evidente.

Rețineți că unele shell-uri folosesc semnul de exclamare pentru
expansiunea istoriei chiar și în interiorul argumentelor citate. Dacă
deci, trebuie să scapi de semnul exclamării cu a
backslash.

-e urmări=set
Urmăriți numai setul specificat de apeluri de sistem. The
-c opțiunea este utilă pentru a determina ce sistem
apelurile pot fi utile de urmărit. De exemplu,
urmări=deschide, închide, citește, scrie înseamnă doar a urmări
acele patru apeluri de sistem. Aveți grijă când faceți
inferențe despre limita utilizator/kernel dacă doar a
subset de apeluri de sistem sunt monitorizate. The
implicit este urmări=toate.

-e urmări=fişier
Urmăriți toate apelurile de sistem care iau un nume de fișier ca un
argument. Vă puteți gândi la aceasta ca la o abreviere
pentru -e urmări=deschide,Stat,chmod,deconectez,... care este
util pentru a vedea ce fișiere este procesul
referire. În plus, folosind abrevierea
se va asigura că nu uitați accidental
include un apel ca lstat În listă. Betchya
l-ar fi uitat pe acela.

-e urmări=proces
Urmăriți toate apelurile de sistem care implică proces
management. Acest lucru este util pentru a urmări furculița,
așteptați și executați pașii unui proces.

-e urmări=reţea
Urmăriți toate apelurile de sistem legate de rețea.

-e urmări=semnal
Urmăriți toate apelurile de sistem legate de semnal.

-e urmări=IPC
Urmăriți toate apelurile de sistem legate de IPC.

-e urmări=desc
Urmăriți toate apelurile de sistem legate de descriptori de fișiere.

-e urmări=memorie
Urmăriți toate apelurile de sistem legate de maparea memoriei.

-e abrev=set
Abreviați rezultatul de la imprimarea fiecărui membru al
structuri mari. Valoarea implicită este abrev=toate.
-v opțiunea are ca efect abrev=nici unul.

-e prolix=set
Structuri de dereferință pentru setul specificat de
apeluri de sistem. Valoarea implicită este prolix=toate.

-e crud=set Imprimați argumente brute, necodificate pentru setul specificat
a apelurilor de sistem. Această opțiune are ca efect
determinând ca toate argumentele să fie tipărite în hexazecimal.
Acest lucru este util mai ales dacă nu aveți încredere în
decodare sau trebuie să cunoașteți cifra reală
valoarea unui argument.

-e semnal=set
Urmăriți numai subsetul specificat de semnale. The
implicit este semnal=toate. De exemplu, semnal =! SIGIO
(Sau semnal=!io) face ca semnalele SIGIO să nu fie
trasate.

-e citit=set Efectuați un dump complet hexazecimal și ASCII a tuturor
date citite din descriptorii de fișier listați în
set specificat. De exemplu, pentru a vedea toate intrările
activitate privind descriptorii de fișiere 3 și 5 utilizare
-e citit=3,5. Rețineți că aceasta este independentă de
urmărirea normală a citit(2) apel de sistem care este
controlat de opțiune -e urmări=citit.

-e scrie=set
Efectuați un dump complet hexazecimal și ASCII a tuturor
datele scrise în descriptorii de fișier listați în
set specificat. De exemplu, pentru a vedea toate rezultatele
activitate privind descriptorii de fișiere 3 și 5 utilizare
-e scrie=3,5. Rețineți că aceasta este independentă de
urmărirea normală a scrie(2) apel de sistem care
este controlată de opțiune -e urmări=scrie.

-I întreruptibilă
Când strace poate fi întreruptă de semnale (cum ar fi
apăsând ^C). 1: niciun semnal nu este blocat; 2: fatal
semnalele sunt blocate în timpul decodării syscall
(Mod implicit); 3: semnalele fatale sunt întotdeauna blocate
(implicit dacă „-o PROG FIȘIER”); 4: semnale fatale și
SIGTSTP (^Z) sunt întotdeauna blocate (util de făcut
strace -o FILE PROG nu se opreste pe ^Z).

-o nume de fișier Scrieți rezultatul urmăririi în fișier nume de fișier mai degraba
decât să stderr. Utilizare nume de fișier.pid if -ff este folosit.
Dacă argumentul începe cu „|” sau cu '!' apoi cel
restul argumentului este tratat ca o comandă și tot
ieșirea este conectată la acesta. Acest lucru este convenabil pentru
canalizarea ieșirii de depanare la un program fără
afectând redirecționările programelor executate.

-O deasupra Setați supraîncărcarea pentru urmărirea apelurilor de sistem către
deasupra microsecunde. Acest lucru este util pentru
suprascriind euristica implicită pentru a ghici cum
se petrece mult timp doar pentru măsurarea timpului
apeluri de sistem folosind -c opțiune. Precizia de
euristica poate fi măsurată prin sincronizarea unui dat
programul rulează fără urmărire (folosind timp(1)) și
comparând timpul acumulat de apel de sistem cu
total produs folosind -c.

-p pid Atașați la proces cu ID-ul procesului pid și
începe urmărirea. Urma poate fi terminată la orice
timp printr-un semnal de întrerupere a tastaturii (CTRL-C).
strace va răspunde detașându-se de la
proces(ele) urmărite, lăsându-le (le) să continue
alergare. Multiplu -p opțiunile pot fi folosite pentru atașare
la multe procese. -p Sintaxa „`pidof PROG`” este
sprijinit.

-P cale Urmăriți doar accesarea apelurilor de sistem cale. Multiplu -P
opțiunile pot fi folosite pentru a specifica mai multe căi.

-s strsize Specificați dimensiunea maximă a șirului de tipărit (the
implicit este 32). Rețineți că numele fișierelor nu sunt
considerate șiruri și sunt întotdeauna tipărite integral.

-S filtrează după Sortați rezultatul histogramei tipărite de -c
opțiune după criteriul specificat. Valorile legale sunt
timp, Apeluri, nume, și nimic (implicit este timp).

-u nume de utilizator Rulați comanda cu ID-ul utilizatorului, ID-ul grupului și
grupuri suplimentare de nume de utilizator. Această opțiune este
util doar atunci când rulează ca root și activează
executarea corectă a binarelor setuid și/sau setgid.
Cu excepția cazului în care această opțiune este folosită setuid și setgid
programele sunt executate fără privilegii efective.

-E a fost=val Rulați comanda cu a fost=val în lista sa de mediu
variabile.

-E a fost Elimină a fost din lista moștenită de mediu
variabile înainte de a-l transmite la comandă.

DIAGNOSTIC


Cand comandă iesiri, strace ieșiri cu aceeași stare de ieșire. Dacă
comandă se încheie cu un semnal, strace se încheie cu
acelaşi semnal, astfel încât strace poate fi folosit ca proces de ambalare
transparent pentru procesul părinte invocator. Rețineți că părintele-
relație copil (notificări de oprire a semnalului, valoarea getppid(),
etc) între procesul urmărit și părintele acestuia nu sunt păstrate
dacă nu -D este folosit.

Atunci când se utilizează -p, starea de ieșire a strace este zero dacă nu există
a fost o eroare neașteptată în efectuarea urmăririi.

SETUID INSTALARE


If strace este instalat setuid la root, apoi utilizatorul care invocă
va putea să se atașeze și să urmărească procesele deținute de orice utilizator.
În plus, programele setuid și setgid vor fi executate și
urmărite cu privilegiile efective corecte. Din moment ce numai utilizatori
de încredere cu privilegii complete de root ar trebui să li se permită să facă acestea
lucruri, are sens doar să instalați strace ca setuid la root
când utilizatorii care îl pot executa sunt restricționați la acești utilizatori
care au această încredere. De exemplu, este logic să instalați un
versiune specială a strace cu modul „rwsr-xr--”, utilizator rădăcină și
grup urmări, unde membrii urmări grup sunt utilizatori de încredere.
Dacă utilizați această funcție, vă rugăm să nu uitați să instalați un
versiunea setuid a strace pentru folosirea luserelor obișnuite.

Utilizați strace64 online folosind serviciile onworks.net


Servere și stații de lucru gratuite

Descărcați aplicații Windows și Linux

Comenzi Linux

Ad