Angielskifrancuskihiszpański

Ad


Ulubiona usługa OnWorks

strace64 — Online w chmurze

Uruchom strace64 w bezpłatnym dostawcy hostingu OnWorks w systemie Ubuntu Online, Fedora Online, emulatorze online systemu Windows lub emulatorze online systemu MAC OS

To jest polecenie strace64, które można uruchomić u dostawcy bezpłatnego hostingu OnWorks przy użyciu jednej z naszych wielu bezpłatnych stacji roboczych online, takich jak Ubuntu Online, Fedora Online, emulator online systemu Windows lub emulator online systemu MAC OS

PROGRAM:

IMIĘ


strace - śledzenie wywołań i sygnałów systemowych

STRESZCZENIE


strace [-CdffhikqrtttTvVxxy] [-In] [-bdobry] [-eexpr]... [-akolumna]
[-ofilet] [-srozmiar] [-Pścieżka] ... -pPid... / [-D] [-Ebyło[=val]]...
[-unazwa użytkownika] komenda [args]

strace -c[df] [-In] [-bdobry] [-eexpr]... [-Onad głową] [-SSortuj według]
-pPid... / [-D] [-Ebyło[=val]]... [-unazwa użytkownika] komenda [args]

OPIS


W najprostszym przypadku strace uruchamia określony komenda aż wyjdzie.
Przechwytuje i nagrywa wywołania systemowe wywoływane przez a
procesu i sygnałów odbieranych przez proces. Nazwa
na każdym wywołaniu systemowym drukowane są jego argumenty i zwracana wartość
błąd standardowy lub do pliku określonego za pomocą -o opcja.

strace jest użytecznym narzędziem diagnostycznym, instruktażowym i debugującym.
Znajdą go administratorzy systemu, diagnostycy i osoby rozwiązujące problemy
bezcenne przy rozwiązywaniu problemów z programami, dla których jest źródłem
nie są łatwo dostępne, ponieważ nie trzeba ich ponownie kompilować w odpowiedniej kolejności
aby je wyśledzić. Znajdą to studenci, hakerzy i osoby nadmiernie ciekawskie
można się wiele dowiedzieć o systemie i jego wywołaniach systemowych
śledzenie nawet zwykłych programów. I programiści to odkryją
wywołania systemowe i sygnały to zdarzenia zachodzące u użytkownika/jądra
interfejsie, dokładne sprawdzenie tej granicy jest bardzo przydatne w przypadku błędów
izolacja, sprawdzanie zdrowia psychicznego i próba uchwycenia warunków wyścigu.

Każda linia śladu zawiera nazwę wywołania systemowego, po której następuje jego
argumenty w nawiasach i wartość zwracana. Przykład z
stracing polecenie „cat /dev/null” to:

open("/dev/null", TYLKO O_RD) = 3

Błędy (zwykle zwracana wartość -1) mają symbol errno i błąd
dołączony ciąg znaków.

open ("/ foo / bar", O_RDONLY) = -1 ENOENT (Brak takiego pliku lub katalogu)

Sygnały są drukowane jako symbol sygnału i zdekodowana struktura siginfo. Jakiś
fragment z stracingu i przerywania komendy "uśpij 666" to:

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

Jeśli wykonywane jest wywołanie systemowe, a w międzyczasie wykonywane jest inne
wywołany z innego wątku/procesu strace spróbuje zachować
kolejność tych zdarzeń i oznaczyć trwające połączenie jako trwające
niedokończony. Gdy połączenie powróci, zostanie oznaczone jako wznowione.

[pid 28772] wybierz(4, [3], NULL, NULL, NULL
[pid 28779] clock_gettime(CLOCK_REALTIME, {1130322148, 939977000}) = 0
[pid 28772] <... wybierz wznowione> ) = 1 (w [3])

Przerwanie (możliwego do ponownego uruchomienia) wywołania systemowego przez dostarczenie sygnału jest
przetwarzane inaczej, gdy jądro kończy wywołanie systemowe, a także
organizuje jego natychmiastowe ponowne wykonanie po zakończeniu obsługi sygnału.

odczyt (0, 0x7ffff72cf5cf, 1) = ? ERESTARTSYS (do ponownego uruchomienia)
--- SYGALRM... ---
rt_sigreturn(0xe) = 0
przeczytaj(0, "", 1) = 0

Argumenty drukowane są z pasją w formie symbolicznej. Ten przykład
pokazuje powłokę wykonującą przekierowanie wyjścia „>>xyzzy”:

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

Tutaj trzeci argument open jest dekodowany poprzez rozbicie flagi
argument na trzy bitowe składniki OR i wypisanie trybu
zgodnie z tradycją wartość ósemkowa. Tam, gdzie tradycyjne lub natywne użycie jest inne
z ANSI lub POSIX, preferowane są te drugie formy. W niektórych przypadkach,
strace dane wyjściowe okazały się bardziej czytelne niż źródło.

Wskaźniki struktury są dereferowane, a elementy członkowskie są wyświetlane jako
odpowiedni. We wszystkich przypadkach argumenty są sformatowane w formacie najbardziej przypominającym C
moda możliwa. Na przykład istota polecenia „ls -l
/dev/null” jest przechwytywany jako:

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

Zwróć uwagę, w jaki sposób wyłuskiwany jest argument „struct stat” i w jaki sposób każdy z nich
członek jest wyświetlany symbolicznie. W szczególności zaobserwuj, jak
Element st_mode jest starannie dekodowany do bitowego OR symbolicznego i
wartości liczbowe. Zauważ także, że w tym przykładzie pierwszy argument to
lstat jest wejściem wywołania systemowego, a drugim argumentem jest an
wyjście. Ponieważ argumenty wyjściowe nie są modyfikowane, jeśli wywołanie systemowe
nie powiedzie się, argumenty nie zawsze mogą zostać wyłuskane. Na przykład ponowna próba
przykład „ls -l” z nieistniejącym plikiem daje następujący efekt
line:

lstat("/foo/bar", 0xb004) = -1 ENOENT (Brak takiego pliku lub katalogu)

W tym przypadku światło na ganku jest włączone, ale nikogo nie ma w domu.

Wskaźniki znaków są dereferencjonowane i drukowane jako ciągi C. Nie-
znaki drukowane w łańcuchach są zwykle reprezentowane przez zwykłe C
kody ucieczki. Tylko pierwszy rozmiar (domyślnie 32) bajtów ciągów
są drukowane; dłuższe ciągi mają wielokropek dołączony po
cytat zamykający. Oto linia z „ls -l”, gdzie getpwuid biblioteka
rutyna odczytuje plik z hasłami:

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

Podczas gdy struktury są opisywane za pomocą nawiasów klamrowych, prostych wskaźników i
tablice są drukowane przy użyciu nawiasów kwadratowych oddzielonych przecinkami
elementy. Oto przykład polecenia „id” w systemie z
dodatkowe identyfikatory grup:

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

Z drugiej strony zestawy bitów są również pokazywane w nawiasach kwadratowych, ale
elementy zestawu oddzielane są jedynie spacją. Oto skorupa
przygotowanie do wykonania polecenia zewnętrznego:

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

Tutaj drugim argumentem jest zestaw bitów dwóch sygnałów, SIGCHLD i
SYGTOU. W niektórych przypadkach zestaw bitów jest tak pełny, że wydrukowanie pliku
nieustawione elementy są bardziej wartościowe. W takim przypadku zestaw bitów jest poprzedzany
za pomocą tyldy takiej jak ta:

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

Tutaj drugi argument reprezentuje pełny zestaw wszystkich sygnałów.

OPCJE


-c Licz czas, połączenia i błędy dla każdego wywołania systemowego
i zgłoś podsumowanie zakończenia programu. W Linuksie
próbuje to pokazać czas systemowy (czas spędzony procesora
działający w jądrze) niezależnie od zegara ściennego
czas. Gdyby -c jest używany z -f or -F (poniżej), tylko
przechowywane są sumy zbiorcze dla wszystkich prześledzonych procesów.

-C Jak -c ale także wypisz regularne dane wyjściowe while
procesy działają.

-D Uruchom proces śledzenia jako odłączony wnuk, a nie jako
rodzic śladu. To redukuje to, co widzialne
Efekt strace utrzymując bezpośrednie śledzenie
dziecko procesu wywołującego.

-d Pokaż niektóre dane wyjściowe debugowania strace się na
Standardowy błąd.

-f Śledź procesy potomne w momencie ich tworzenia przez
obecnie śledzone procesy w wyniku
widelec(2) widelec(2) i klonować(2) wywołania systemowe. Notatka
że -p PID -f dołączy wszystkie wątki procesu
PID, jeśli jest wielowątkowy, a nie tylko wielowątkowy
id_wątku = PID.

-ff Jeśli -o filename opcja obowiązuje, każdy
do którego zapisywany jest ślad procesów nazwa_pliku.pid gdzie pid
to numeryczny identyfikator procesu każdego procesu. To jest
niekompatybilne z -c, ponieważ nie liczy się żaden proces
są trzymane.

-F Ta opcja jest już przestarzała i ma to samo
funkcjonalność jako -f.

-h Wydrukuj podsumowanie pomocy.

-i Wydrukuj wskaźnik instrukcji w momencie
wywołanie systemowe.

-k Wydrukuj ślad stosu wykonania śledzonego
procesy po każdym wywołaniu systemowym (eksperymentalne).
Ta opcja jest dostępna tylko wtedy, gdy strace jest zbudowany
z libunwindem.

-q Pomiń komunikaty o dołączaniu, odłączaniu itp.
Dzieje się to automatycznie po przekierowaniu danych wyjściowych
do pliku i polecenie jest uruchamiane bezpośrednio zamiast
dołączając.

-qq Jeśli podano dwukrotnie, pomiń komunikaty o zakończeniu procesu
stan.

-r Wydrukuj względny znacznik czasu po wejściu do każdego systemu
dzwonić. Rejestruje różnicę czasu pomiędzy
początek kolejnych wywołań systemowych.

-t Każdą linię śladu poprzedź porą dnia.

-tt Jeśli zostanie podany dwukrotnie, wydrukowany czas będzie uwzględniał
mikrosekundy.

-tt Jeśli zostanie podany trzykrotnie, wydrukowany czas będzie uwzględniał
mikrosekund i wydrukowana zostanie część wiodąca
jako liczba sekund od epoki.

-T Pokaż czas spędzony na wywołaniach systemowych. To zapisuje
różnica czasu pomiędzy początkiem a końcem
koniec każdego wywołania systemowego.

-w Podsumuj różnicę czasu pomiędzy początkiem
i koniec każdego wywołania systemowego. Wartość domyślna to
podsumować czas systemowy.

-v Drukuj nieskrócone wersje środowiska, statystyk,
termios itp. wywołuje. Struktury te są bardzo
powszechne w połączeniach, dlatego wyświetlane jest zachowanie domyślne
rozsądny podzbiór elementów struktury. Użyj tego
możliwość uzyskania wszystkich krwawych szczegółów.

-V Wydrukuj numer wersji strace.

-x Wydrukuj wszystkie ciągi inne niż ASCII w postaci ciągu szesnastkowego
Format.

-xx Wydrukuj wszystkie ciągi w formacie ciągów szesnastkowych.

-y Wydrukuj ścieżki powiązane z deskryptorem pliku
argumenty.

-yy Wydrukuj pary ip:port powiązane z plikiem gniazda
deskryptory.

-a kolumna Wyrównaj zwracane wartości w określonej kolumnie (domyślnie
kolumna 40).

-b wywoływanie systemowe, Jeśli osiągnięte zostanie określone wywołanie systemowe, odłącz się od śledzenia
proces. Obecnie tylko dobry wywołanie systemowe jest
utrzymany. Ta opcja jest przydatna, jeśli chcesz
śledzenia procesu wielowątkowego i dlatego wymagają
-f, ale nie chcę śledzić jego (potencjalnie bardzo
złożone) dzieci.

-e expr Wyrażenie kwalifikujące, które modyfikuje które zdarzenia
wyśledzić lub jak je wyśledzić. Format
wyrażenie to:

[kwalifikator=][!]wartość1[,wartość2] ...

gdzie kwalifikator Jest to jeden z wyśledzić, skrót, gadatliwy,
surowy, sygnał, czytaćlub napisać i wartość jest
symbol lub liczba zależna od kwalifikatora. Domyślny
kwalifikator jest wyśledzić. Używanie wykrzyknika
neguje zbiór wartości. Na przykład, -e koncepcja
znaczy dosłownie -e wyśledzić=koncepcja co z kolei oznacza
śledzić tylko koncepcja wywołanie systemowe. Dla kontrastu,
-e wyśledzić=!koncepcja oznacza śledzenie każdego wywołania systemowego
z wyjątkiem koncepcja. Ponadto wartości specjalne cała kolekcja
i Żaden mają oczywiste znaczenia.

Należy pamiętać, że w niektórych powłokach wykrzyknik służy do oznaczania
rozszerzanie historii nawet w cytowanych argumentach. Jeśli
więc musisz uciec przed wykrzyknikiem za pomocą a
ukośnik wsteczny.

-e wyśledzić=zestaw
Śledź tylko określony zestaw wywołań systemowych. The
-c Opcja jest przydatna do określenia, który system
śledzenie połączeń może być przydatne. Na przykład,
wyśledzić=otwieraj, zamykaj, czytaj, pisz oznacza tylko śledzenie
te cztery wywołania systemowe. Zachowaj ostrożność podczas robienia
wnioski dotyczące granicy użytkownik/jądro, jeśli tylko a
podzbiór wywołań systemowych jest monitorowany. The
wartość domyślna to wyśledzić=cała kolekcja.

-e wyśledzić=filet
Śledź wszystkie wywołania systemowe, które przyjmują nazwę pliku jako
argument. Można to traktować jako skrót
dla -e wyśledzić=koncepcja,stan,chmod,odczepić,... który jest
przydatne do sprawdzenia, jakie pliki to proces
odwoływanie się. Ponadto, używając skrótu
sprawi, że przypadkowo o tym nie zapomnisz
obejmują połączenie typu stan na liście. Betchya
zapomniałbym o tym.

-e wyśledzić=wygląda tak
Śledź wszystkie wywołania systemowe, które obejmują proces
kierownictwo. Jest to przydatne do obserwacji widelca,
poczekaj i wykonaj kroki procesu.

-e wyśledzić=sieć
Śledź wszystkie wywołania systemowe związane z siecią.

-e wyśledzić=sygnał
Śledź wszystkie wywołania systemowe związane z sygnałem.

-e wyśledzić=ipc
Śledź wszystkie wywołania systemowe związane z IPC.

-e wyśledzić=desc
Śledź wszystkie wywołania systemowe związane z deskryptorem pliku.

-e wyśledzić=pamięć
Śledź wszystkie wywołania systemowe związane z mapowaniem pamięci.

-e skrót=zestaw
Skróć wynik drukowania każdego elementu członkowskiego
duże konstrukcje. Wartość domyślna to skrót=cała kolekcja,
-v opcja ma skutek skrót=Żaden.

-e gadatliwy=zestaw
Struktury dereferencji dla określonego zestawu
wywołania systemowe. Wartość domyślna to gadatliwy=cała kolekcja.

-e surowy=zestaw Wydrukuj surowe, niezdekodowane argumenty dla określonego zestawu
wywołań systemowych. Ta opcja ma wpływ
powodując wypisanie wszystkich argumentów w formacie szesnastkowym.
Jest to szczególnie przydatne, jeśli nie ufasz plikowi
dekodowanie lub musisz znać rzeczywistą liczbę
wartość argumentu.

-e sygnał=zestaw
Śledź tylko określony podzbiór sygnałów. The
wartość domyślna to sygnał=cała kolekcja, Na przykład, sygnał =! SIGIO
(lub sygnał=!io) powoduje, że nie ma sygnałów SIGIO
wyśledzone.

-e czytać=zestaw Wykonaj pełny zrzut szesnastkowy i ASCII wszystkich plików
dane odczytane z deskryptorów plików wymienionych w pliku
określony zestaw. Na przykład, aby zobaczyć wszystkie dane wejściowe
aktywność na deskryptorach plików 3 i 5 posługiwać się
-e czytać=3,5. Należy pamiętać, że jest to niezależne od
normalne śledzenie czytać(2) wywołanie systemowe, które jest
kontrolowany przez opcję -e wyśledzić=czytać.

-e napisać=zestaw
Wykonaj pełny zrzut szesnastkowy i ASCII wszystkich plików
dane zapisane w deskryptorach plików wymienionych w
określony zestaw. Na przykład, aby zobaczyć wszystkie dane wyjściowe
aktywność na deskryptorach plików 3 i 5 posługiwać się
-e napisać=3,5. Należy pamiętać, że jest to niezależne od
normalne śledzenie napisać(2) wywołanie systemowe które
jest kontrolowana przez opcję -e wyśledzić=napisać.

-I przerywalny
Kiedy śledzenie może zostać przerwane przez sygnały (takie jak
naciśnięcie ^C). 1: żadne sygnały nie są blokowane; 2: śmiertelny
sygnały są blokowane podczas dekodowania wywołania systemowego
(domyślny); 3: sygnały krytyczne są zawsze blokowane
(domyślnie jeśli '-o PROG PLIKU'); 4: fatalne sygnały i
SIGTSTP (^Z) są zawsze blokowane (przydatne do wykonania
strace -o PROG PLIKU nie zatrzymuje się na ^Z).

-o filename Zapisz wynik śledzenia do pliku filename raczej
niż do stderr. Używać nazwa_pliku.pid if -ff Jest używane.
Jeśli argument zaczyna się od „|” lub z '!' a później
reszta argumentu jest traktowana jako polecenie i w ogóle
wyjście jest do niego przesyłane. Jest to wygodne dla
przesyłanie wyników debugowania do programu bez
wpływających na przekierowania uruchamianych programów.

-O nad głową Ustaw obciążenie dla śledzenia wywołań systemowych na
nad głową mikrosekundy. Jest to przydatne dla
zastąpienie domyślnej heurystyki zgadywania, jak
dużo czasu spędza się na samym mierzeniu czasu
wywołania systemowe za pomocą -c opcja. Dokładność
heurystykę można ocenić na podstawie pomiaru czasu
program uruchamiany bez śledzenia (przy użyciu czas(1)) i
porównanie skumulowanego czasu wywołań systemowych z
całkowita wyprodukowana przy użyciu -c.

-p Pid Dołącz do procesu za pomocą identyfikatora procesu Pid i
rozpocząć śledzenie. Śledzenie może zostać zakończone w dowolnym momencie
czas za pomocą sygnału przerwania klawiatury (CTRL-C).
strace zareaguje odłączając się od
prześledzone procesy, pozostawiając je w celu kontynuacji
działanie. Wiele -p można użyć opcji dołączenia
do wielu procesów. -p Składnia "pidof PROG" jest taka
utrzymany.

-P ścieżka Śledź tylko dostęp do wywołań systemowych ścieżka. Wielokrotność -P
opcji można użyć do określenia kilku ścieżek.

-s rozmiar Określ maksymalny rozmiar ciągu do wydrukowania (plik
wartość domyślna to 32). Pamiętaj, że nazwy plików nie są
uważane za ciągi znaków i zawsze są drukowane w całości.

-S Sortuj według Posortuj wynik histogramu wydrukowanego według -c
opcję według określonego kryterium. Wartości prawne są
czas, Połączenia, Nazwa, nic (domyślnie czas).

-u nazwa użytkownika Uruchom polecenie z identyfikatorem użytkownika, identyfikatorem grupy i
grupy uzupełniające nazwa użytkownika. Ta opcja to
przydatne tylko podczas uruchamiania jako root i umożliwia
poprawne wykonanie plików binarnych setuid i/lub setgid.
Chyba że ta opcja zostanie użyta setuid i setgid
programy są wykonywane bez efektywnych uprawnień.

-E było=val Uruchom polecenie za pomocą było=val na liście środowisk
zmiennych.

-E było Usunąć było z odziedziczonej listy środowiska
zmiennych przed przekazaniem ich do polecenia.

DIAGNOSTYKA


Kiedy komenda wyjścia, strace wyjścia z tym samym statusem wyjścia. Jeśli
komenda kończy się sygnałem, strace kończy się na
ten sam sygnał, więc tak strace może być stosowany jako proces owijania
przezroczysty dla wywołującego procesu nadrzędnego. Pamiętaj, że rodzic-
relacja podrzędna (powiadomienia o zatrzymaniu sygnału, wartość getppid(),
itp.) między śledzonym procesem a jego rodzicem nie są zachowywane
chyba że -D Jest używane.

Podczas używania -p, status wyjścia strace wynosi zero, chyba że istnieje
wystąpił nieoczekiwany błąd podczas śledzenia.

USTAWID PORADY


If strace jest zainstalowany setuid na roota, a następnie na użytkownika wywołującego
będzie mógł dołączać i śledzić procesy należące do dowolnego użytkownika.
Dodatkowo zostaną wykonane programy setuid i setgid oraz
śledzone z właściwymi, skutecznymi uprawnieniami. Ponieważ tylko użytkownicy
zaufanym z pełnymi uprawnieniami roota, należy zezwolić na wykonanie tych czynności
rzeczy, instalacja ma sens tylko strace jako ustawiony na root
gdy użytkownicy mogący je wykonać są ograniczeni do tych użytkowników
którzy mają to zaufanie. Na przykład sensowne jest zainstalowanie pliku
specjalna wersja strace z trybem „rwsr-xr--”, użytkownik korzeń i
grupa wyśledzić, gdzie członkowie wyśledzić grupa to zaufani użytkownicy.
Jeśli korzystasz z tej funkcji, pamiętaj o zainstalowaniu oprogramowania innego niż
wersja setuid strace dla zwykłych luserów.

Korzystaj ze strace64 online, korzystając z usług onworks.net


Darmowe serwery i stacje robocze

Pobierz aplikacje Windows i Linux

Komendy systemu Linux

Ad