Provided by: manpages-pl_20060617-3_all bug

NAZWA

       strace - led wywolania systemowe i sygnaly

SK/LADNIA

       strace  [  -dffhiqrtttTvxx ] [ -akolumna ] [ -ewyra ] ...  [ -oplik ] [
       -ppid ] ...  [ -srozmiarnapisu ] [ -uuytkownik ] [ komenda [ arg ...  ]
       ]

       strace  -c  [  -ewyra ] ...  [ -Owydatki ] [ -Ssortuj ] [ komenda [ arg
       ...  ] ]

OPIS

       W najprostszym przypadku, strace wykonuje zadan komend `komenda'  a  si
       ona  nie  skoczy.   Strace  przechwytuje i nagrywa wywolania systemowe,
       dokonane przez proces, oraz sygnaly,  ktore  do  niego  dotarly.  Nazwa
       kadego   wywolania,   oraz  jego  argumenty,  s  wypisywane  na  wyjcie
       standardowe bldu, lub do pliku podanego w opcji -o.

       strace   jest   uytecznym    narzdziem    diagnostyki,    debuggowania.
       Administratorzy  systemow, diagnostycy i napotykacze problemow zauwa, e
       jest nieocenione dla rozwizywania problemow z programami, ktorych rodel
       nie  ma wprost dostpnych. Strace bowiem nie potrzebuje rekompilacji aby
       go uy.  Studenci, hackerzy i ogolnie zainteresowani zauwa, e z ledzenia
       wywola systemowych mona si wiele nauczy o systemie. Programici zauwa, e
       skoro wywolania  systemowe  i  sygnaly  s  zdarzeniami  zachodzcymi  na
       interfejsie  uytkownik/jdro,  to  ich  bliska  obserwacja moe by bardzo
       uyteczna  do  izolowania  bldow,  sprawdzania  czystoci  i   probowania
       wylapywania ulotnych warunkow.

       Kada  ledzona linia zawiera nazw wywolania systemowego, za ktor nastpuj
       jego  argumenty,  otoczone  nawiasami,  oraz   jego   warto   zwracana.
       Przykladowe ledzenie komendy ``cat /dev/null'' daje:

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

       Do  bldow  (zwykle  wartoci zwracane -1) dopisywany jest symbol errno i
       napis bldu.

       open("/foo/bar", O_RDONLY) = -1 ENOENT (No such file or directory)

       Sygnaly s drukowane jako symbol, oraz napis sygnalu. Fragment  ledzenia
       i przerwania komendy ``sleep 666'' to:

       sigsuspend([] <unfinished ...>
       --- SIGINT (Interrupt) ---
       +++ killed by SIGINT +++

       Argumenty  s  namitnie  drukowane  w formie symbolicznej.  Przyklad ten
       pokazuje dokonanie przekierowania ``>>xyzzy'':

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

       Tutaj, wymienione trzy argumenty z open s zdekodowane poprzez  rozbicie
       argumentu   flagi   na   jego   bitowe  skladniki  i  wydrukowanie  ich
       tradycyjnych nazw, oraz wartoci osemkowej  praw.  Cho  tradycyjne,  lub
       natywne  uywanie  roni  si  od  ANSI  lub POSIX, to te ostatnie formy s
       jednak preferowane.  W  niektorych  wypadkach,  wyjcie  strace  moe  by
       bardziej czytelne ni rodla.

       Wskaniki  struktury  s  dereferencjonowane,  a czlonkowie s odpowiednio
       wywietlani. We wszystkich wypadkach argumenty s formatowane w stylu  C.
       Na  przyklad,  istota  komendy  ``ls -l /dev/null'' jest przechwytywana
       jako:

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

       Zauwa, jak zdereferencjonowano argument `struct stat' i jak  wywietlono
       kadego  czlonka.  Praktycznie,  zauwa  jak  ostronie zostal zdekodowany
       czlonek st_mode na jego mask bitow. Zauwa  te,  e  w  tym  przykladzie,
       pierwszym  argumentem lstat jest wejcie wywolania systemowego, a drugim
       jego  wyjcie.  Poniewa  argumenty  wyjciowe  nie  s  modyfikowane  jeli
       wywolanie     zawiedzie,     argumenty    nie    zawsze    mog    zosta
       zdereferencjonowane. Na przyklad proba ``ls -l'' na nieistniejcym pliku
       da nastpujc lini:

       lstat("/foo/bar", 0xb004) = -1 ENOENT (No such file or directory)

       Wskaniki  znakowe  s  dereferencjonowane  i  wywietlane  jako napisy C.
       Niedrukowalne znaki s reprezentowane w kodach eskejpowych.  Drukowanych
       jest tylko pierwszych rozmiarnapisu (domylnie 32) bajtow napisu; dlusze
       napisy maj za zamykajcym cytatem dolczone  wielokropki.   Oto  przyklad
       ``ls -l'', gdzie funkcja biblioteki getpwuid odczytuje plik z haslem:

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

       Podczas gdy struktury s notowane przy uyciu nawiasow klamrowych, zwykle
       wskaniki i tablice s drukowane  przy  uyciu  nawiasow  kwadratowych,  z
       przecinkami  oddzielajcymi  elementy.  Oto  przyklad  wywolania komendy
       ``id'' na systemie z dodatkowymi id grup:

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

       Z  drugiej  strony,  zbiory  bitowe  te  s   pokazywane   w   nawiasach
       kwadratowych,  lecz  elementy  s  oddzielane  tylko  przez  spacj.  Oto
       powloka, przygotowujca si do wywolania komendy zewntrznej:

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

       Drugi argument jest zbiorem bitowym dwoch sygnalow, SIGCHLD i  SIGTTOU.
       W  niektorych wypadkach, zbiory bitowe s tak pelne, e bardziej sensowne
       jest drukowanie nieustawionych elementow. W takiej sytuacji zbior  jest
       poprzedzony tyld, jak w nastpujcym przykladzie:

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

       Drugi argument wskazuje, e ustawiono caly zestaw sygnalow.

OPCJE

       -c          Zliczaj  czas, wywolania i bldy dla kadego wywolania
                   systemowego i zglo na kocu raport.

       -d          Przeka na stderr wyjcie debuggowe strace.

       -f          led procesy potomne, tworzone prze  obecnie  ledzone
                   procesy,   jako   rezultat   wywolania   systemowego
                   fork(2). Nowe procesy s  dolczane  tak  szybko,  jak
                   szybko  zostaje  uzyskany  ich  pid  (poprzez  warto
                   zwracan fork(2) w procesie  rodzicielskim).  Oznacza
                   to,  e  takie dzieci mog na chwil by niekontrolowane
                   (szczegolnie  w  wypadku  vfork(2)),  a  rodzic  nie
                   zostanie  znow wyshedulowany do dokoczenia wywolania
                   (v)fork(2).  Jeli rodzic zdecyduje zaczeka (wait(2))
                   na  dziecko,  ktore obecnie jest ledzone, zostaje on
                   zawieszony a potomek si nie zakoczy.

       -ff         opcja -o nazwapliku bdzie  dziala,  ledzenie  kadego
                   procesu jest zapisywane do nazwapliku.pid, gdzie pid
                   jest numerycznym identyfikatorem procesu.

       -F          Na SunOS 4.x  opcja  ta  powoduje  prob  podania  za
                   vforkami  poprzez  triki  dynamicznego linkowania. W
                   przeciwnym wypadku, vforki nie bd ledzone,  nawet  z
                   podan opcj -f.

       -h          Wydrukuj podsumowanie pomocy.

       -i          Drukuj   podczas   wywolania   systemowego   wskanik
                   instrukcji.

       -q          Zahamuj komunikaty o  przylczaniu,  odlczaniu,  etc.
                   Dzieje   si   to   automatycznie   gdy  wyjcie  jest
                   przekierowywane do pliku, a komenda jest  wykonywana
                   bezporednio, zamiast przylczania.

       -r          Drukuj  wzgldny  timestamp  podczas kadego wywolania
                   systemowego. Nagruwa to ronic czasu midzy  pocztkami
                   kolejnych wywola systemowych.

       -t          Poprzed kad lini trace czasem dnia.

       -tt         Jeli   podane  dwukrotnie,  wydrukowany  czas  wlcza
                   mikrosekundy.

       -ttt        Jeli  podane  trzykrotnie,  wydrukowany  czas  wlcza
                   mikrosekundy, a prowadzca porcja bdzie zawiera liczb
                   sekund od epoki.

       -T          Poka  czas  spdzony  na   wywolaniach   systemowych.
                   Nagrywa  to  ronice  czasowe midzy pocztkiem i kocem
                   kadego wywolania systemowego.

       -v          Drukuj nieskrocone wersje wywola environment,  stat,
                   termios, itp.  Struktury te s wspolne w wywolaniach,
                   wic domylne  zachowanie  wywietla  rozsdny  podzbior
                   czlonkow. Gdy uzyjesz tej opcji, wywietlone zostanie
                   wszystko.

       -V          Wydrukuj numer wersji strace.

       -x          Drukuj wszystkie  niedrukowalne  napisy  w  formacie
                   szesnastkowym.

       -xx         Drukuj wszystkie napisy w formacie szesnastkowym.

       -a kolumna  Justuj   zwracane   wartoci  w  konkretnej  kolumnie
                   (domylnie 40).

       -e wyra     Wyraenie  kwalifikujce,  okrelajce  ktore  zdarzenia
                   ledzi, lub jak je ledzi. Formatem wyraenia jest:
                   [kwalifikator=][!]warto1[,warto2]...
                   gdzie  kwalifikator  jest  jednym  z  trace, abbrev,
                   verbose, raw, signal, read, lub write, a warto  jest
                   zalenaym   od  kwalifikatora  symbolem,  lub  liczb.
                   Domylnym  kwalifikatorem  jest  trace  (led).  Uycie
                   wykrzyknika neguje zbior wartoci. Na przyklad -eopen
                   oznacza -e trace=open, co z kolei oznacza, by  ledzi
                   tylko    wywolania    systemowe   open.   Odwrotnie,
                   -etrace=!open oznacza, by ledzi wszystkie  wywolania
                   poza  wywolaniami open. Dodatkowo, istniej specjalne
                   wartoci all (wszystko) i none (nic).

       Zauwa, e niektore powloki  uywaj  wykrzyknika  dla  rozszerzenia
       histori;  nawet  wewntrz  cytowanych argumentow. Jeli tak bdzie,
       musisz wyeskejpowa wykrzyknik odwrotnym ukonikiem.

       -e trace=zbi'or
              led tylko podany zbior wywola systemowych. Opcja -c  jest
              uyteczna  dla okrelania, ktore wywolania systemowe mog by
              uyteczne       do       ledzenia.       Na       przyklad
              trace=open,close,read,write  oznacza,  by  ledzi tylko te
              cztery wywolania systemowe. Uwaaj z wyciganiem wnioskow o
              ramce  uytkownik/jdro  jeli  monitorujesz  tylko podzbior
              uywanych wywola systemowych. Domylnie, trace=all.

       -e trace=file
              led wszystkie wywolania systemowe, ktore bior nazw  pliku
              jako  argument.   Moesz  myle  o tym jak o skrocie dla -e
              trace=open,stat,chmod,unlink,...  co moe by uyteczne  dla
              sprawdzenia,  ktore  pliki s wane dla procesu.  Co wicej,
              uycie skrotu zapewni, e przypadkiem nie zapomnisz  dolczy
              wywolania w rodzaju lstat.

       -e trace=process
              led   wszystkie  wywolania  systemowe,  ktore  zajmuj  si
              zarzdzaniem procesami. Jest to przydatne do  obserwowania
              krokow fork, wait i exec procesu.

       -e trace=network
              led wszystkie wywolania zwizane z sieci.

       -e trace=signal
              led wszystkie wywolania zwizane z sygnalami.

       -e trace=ipc
              led wszystkie wywolania zwizane z IPC.

       -e abbrev=zbi'or
              Skro  wyjcie  przez  niedrukowanie  kadego  czlonka duych
              struktur.   Domylnie  abbrev=all.  Opcja  -v   ma   efekt
              abbrev=none.

       -e verbose=zbi'or
              Dereferencjuj    struktury    podanego   zestawu   wywola
              systemowych. Domylnie jest verbose=all.

       -e raw=zbi'or
              Drukuj czyste, niezdekodowane argumenty  podanych  wywola
              systemowych.  Opcja  te powoduje, e wszystkie argumenty s
              drukowane szesnastkowo.  Jest  to  najbardziej  uyteczne,
              jeli  nie  ufasz  dekodowaniu,  lub jeli potrzebujesz zna
              wlaciwe wartoci numeryczne argumentow.

       -e signal=zbi'or
              led  tylko   podany   zbior   sygnalow.   Domylnie   jest
              signal=all.  Na  przyklad  signal=!SIGIO (lub signal=!io)
              powoduje, e sygnaly SIGIO nie bd ledzone.

       -e read=zbi'or
              Dokonuj zrzutow szesnastkowych i ascii wszystkich  danych
              odczytywanych  z  deskryptorow  podanych  w  zbiorze.  Na
              przyklad, by zobaczy co dzieje si na wejciu  deskryptorow
              3,  5,  uyj:  -e read=3,5.  Zauwa, e jest to niezalene od
              normalnego   ledzenia   wywolania   read,   ktore    jest
              kontrolowane opcj -e trace=read.

       -e write=zbi'or
              Dokonuj  zrzutow szesnastkowych i ascii wszystkich danych
              zapisywanych  do  deskryptorow  podanych  w  zbiorze.  Na
              przyklad,  by zobaczy co dzieje si na wyjciu deskryptorow
              3, 5, uyj: -e write=3,5.  Zauwa, e jest to  niezalene  od
              normalnego   ledzenia   wywolania   write,   ktore   jest
              kontrolowane opcj -e trace=write.

       -o nazwapliku
              Zapisuj wyjcie ledzenia do pliku  nazwapliku,  a  nie  na
              standardowy bld.  Uyj nazwapliku.pid jeli uyto opcji -ff.
              Jesli argument zaczyna si  od  `|'  lub  od  `!',  reszta
              argumentu  traktowana jest jak komenda i cale wyjcie jest
              do   niej   przesylane.    Jest    to    przydatne    dla
              przekierowywania   wyjcia   debuggowego,   nie   dotykajc
              przekierowa normalnego wyjcia programu.

       -O wydatki
              Ustaw wydatki na ledzenie wywola systemowych  na  wydatki
              mikrosekund.   Jest  to  uyteczne dla przecienia domylnej
              heurystyki dla zgadywania ile  czasu  jest  spdzanego  na
              czystym mierzeniu podczas timingowaniu wywola systemowych
              przy uyciu opcji -c.  Dokladno heurystyki moe by ocenione
              przez   timingowanie   danego  programu  bez  ledzenia  i
              porownanie  zebranego   czasu   wywola   systemowych   do
              calkowitego, wydanego przy uyciu -c .

       -p pid Podwie  si  do procesu o podanym identyfikatorze ID pid i
              rozpocznij  ledzenie.   ledzenie  moe  by   zakoczone   w
              dowolnym momencie przez przerwanie z klawiatury (CTRL-C).
              strace  odpowie  przez  odwieszenie   si   od   ledzonego
              procesu(ow),   pozostawiajc   go   (je)  w  spokoju.   Do
              podwieszenia si do kolejnych 32 procesow, mona uywa wielu
              opcji  -p,  jako uzupelnienie komendy komenda (ktora jest
              opcjonalna, jeli podano przynajmniej jedn opcj -p).

       -s wielkonapisu
              Podaj maksymaln dlugo drukowanego napisu  (domylnie  32).
              Zauwa,  e  nazwy plikow nie s uwaane za napisy i zawsze s
              drukowane w caloci.

       -S sortuj
              Sotruj  wyjciowy  histogram  opcji  -c  wedlug   podanego
              kryterium.  Legalnymi  wartociami  s time, calls, name, i
              nothing (domylne to time).

       -u uytkownik
              Uruchom komend  z  userid  i  groupid,  oraz  dodatkowymi
              grupami uytkownika.  Opcja ta jest uyteczna tylko podczas
              pracy z roota i umoliwia  wlaciwe  wywolanie  binariow  z
              ustawionymi sgid/suid.  Bez tej opcji, programy suid/sgid
              s wywolywane bez efektywnych przywilejow.

INSTALACJA SETUID

       Jeli  strace  jest  zainstalowane  z  suid  root,  to  uytkownik
       wywolujcy bdzie mogl si podlczy i ledzi procesy dowolnego innego
       uytkownika.  Dodatkowo, programy suid i  sgid  bd  wywolywane  i
       ledzonez  wlaciwymi  efektywnymi  przywilejami.  Poniewa robi to
       powinni tylko zaufani uytkownicy  z  przywilejami  roota,  takie
       instalowanie strace ma sens tylko, jeli uytkownicy uprawnieni do
       jego  wywolywania  maj  odpowiednie  przywileje.   Na   przyklad
       sensowne  jest  instalowanie  specjalnej wersji strace z prawami
       `rwsr-xr--', dla uytkownika root i grupy trace, gdzie czlonkowie
       grupy  trace  s  zaufanymi  osobami.  Jeli uywasz tej wlaciwoci,
       pamitej by zainstalowa niesuidowan  wersj  strace  dla  zwyklych
       luserow.

ZOBACZ TAKE

       ptrace(2), proc(4), time(1), trace(1), truss(1)

UWAGI

       Szkoda,   e   w   systemach   z   bibliotekami   dzielonym  jest
       produkowanych tyle mieci podczas ledzenia.

       Jest dobrze myle o wejciach i wyjciach wywola systemowych jak  o
       przeplywie  danych  midzy przestrzeni uytkownika i jdra. Poniewa
       przestrze  uytkownika  i  przestrze  jdra  s  oddzielone  granic
       ochrony   adresow,  mona  czasem  wyciga  wnioski  dedukcyjne  o
       zachowaniu procesu na podstawie wartoci wejcia i wyjcia.

       W niektorych  wypadkach  wywolanie  systemowe  moe  roni  si  od
       udokumentowanego  zachowania,  lub  mie inn nazw. Na przyklad na
       systemach zgodnych z System V, rzeczywiste wywolanie time(2) nie
       pobiera  argumentu,  a funkcja stat nazywana jest xstat i bierze
       dodatkowy  argument.   Ronice  te  s  normalne,  lecz   uczulone
       charakterystyki  interfejsu  wywola  systemowych  s  obslugiwane
       przez wrappery biblioteki C.

       Na niektorych platformach proces,  ktory  ma  zalczone  ledzenie
       wywola  systemowych  z  opcj -p otrzyma SIGSTOP.  Sygnal ten moe
       przerwa wywolanie systemowe, ktore nie jest restartowalne.   Moe
       to  mie  nieprzewidziane  efekty  na  procesie,  jeli proces nie
       podejmuje dziala do restartowania wywolania systemowego.

B/LDY

       Programy, ktore uywaj  bitu  setuid  nie  bd  mialy  efektywnych
       uprawnie uytkownika podczas ledzenia.

       ledzony proces ignoruje SIGSTOP (poza platformami SVR4).

       ledzony  proces,  probujcy  zablokowa  SIGTRAP otrzyma SIGSTOP w
       probie kontynuacji ledzenia.

       ledzony program dziala powoli.

       ledzone procesy,  ktore  schodz  z  komendy  komenda  mog  zosta
       pozostawione po sygnale przerwania (CTRL-C).

       Pod Linuksem, ledzenie procesu init jest zabronione.

       Opcja -i jest slabo wspierana.

HISTORIA

       strace Oryginalny strace zostal napisany przez Paula Kranenburga
       dla SunOS, ktory zostal zinspirowany  narzdziem  trace.   Wersja
       SunOS strace zostala przeniesiona na Linuksa i rozszerzona przez
       Branko Lankestera, ktory rownie napisal wsparcie  jdra  Linuksa.
       Mimo,  e  Paul  w  1992  wypucil  wersj 2.5 strace, prace Branko
       opieraly si na strace 1.5 z 1991. W 1993  Rick  Sladkey  polczyl
       zmiany  strace  2.5 z SunOS ze zmianami wersji linuksowej, dodal
       wiele wlaciwoci z truss'a z SVR4 i  wydal  wersj  strace,  ktora
       dzialala  na obydwu platformach. W 1994 Rick przeportowal strace
       na  SVR4  i  Solaris,  oraz   napisal   wsparcie   automatycznej
       konfiguracji.  W  1995  przeportowal strace na Irixa i zmczyl si
       pisaniem o sobie w trzeciej osobie.

PROBLEMY

       Problemy zwizane ze strace  powinny  by  zglaszane  do  obecnego
       opiekuna strace, ktorym jest Rick Sladkey <jrs@world.std.com>.

INFORMACJE O T/LUMACZENIU

       Powysze   tlumaczenie  pochodzi  z  nieistniejcego  ju  Projektu
       Tlumaczenia Manuali i moe nie by  aktualne.  W  razie  zauwaenia
       ronic   midzy   powyszym   opisem   a  rzeczywistym  zachowaniem
       opisywanego programu lub funkcji,  prosimy  o  zapoznanie  si  z
       oryginaln (angielsk) wersj strony podrcznika.

                                   96/02/13                          STRACE(1)