Come dovrebbe essere usato lo strace?


273

Una volta un collega mi ha detto che l'ultima opzione in cui tutto non è riuscito a eseguire il debug su Linux era l'uso di strace .

Ho cercato di imparare la scienza dietro questo strano strumento, ma non sono un guru dell'amministratore di sistema e non ho davvero ottenuto risultati.

Così,

  • Che cos'è esattamente e cosa fa?
  • Come e in quali casi dovrebbe essere usato?
  • Come dovrebbe essere compreso ed elaborato l'output?

In breve, in parole semplici , come funziona questa roba?


2
strace -p <pid> ti dirà cosa sta succedendo proprio ora con il tuo programma ..... facile e veloce di GDB
ernesto,

1
Personalmente trovo man stracedavvero facile da leggere e utile. (PS non conosceva lo strace prima di ieri e non un esperto di Linux)
Alexander Malakhov,

1
"strace è un tracciatore di chiamate di sistema" - mostra semplicemente quali funzioni del kernel vengono chiamate (con i loro argomenti) come risultato del tuo programma.
Pithikos,

Risposte:


184

Panoramica della
traccia La traccia può essere vista come un debugger leggero. Consente a un programmatore / utente di scoprire rapidamente come un programma interagisce con il sistema operativo. Lo fa monitorando le chiamate e i segnali di sistema.

Utilizzabile
per quando non si dispone di codice sorgente o non si desidera essere disturbati a esaminarlo davvero.
Inoltre, utile per il tuo codice se non hai voglia di aprire GDB, ma sei solo interessato a comprendere l'interazione esterna.

Una buona piccola introduzione
mi sono imbattuto in questa introduzione per utilizzare solo l'altro giorno: strace ciao mondo


Quindi cosa succede se usi qualcosa sotto il livello che traccia i monitor?
Pacerier,

In tal caso controllo @Pacerier ltrace stackoverflow.com/a/52012215/5884955
prosti

È ottimo per il debug di programmi di basso livello che esistono solo / principalmente per effettuare chiamate di sistema interessanti o sperimentare nuove opzioni per syscalls per vedere cosa fa il tuo sistema operativo. Fondamentalmente salva il problema di scrivere il codice di registrazione / controllo degli errori per esperimenti una tantum. (O se stai scrivendo in asm o qualcosa in cui c'è una buona probabilità che tu abbia accidentalmente superato gli argomenti sbagliati o anche il numero di chiamata.) Strace è molto più veloce di GDB perché cerca codici errno per te, ad esempio -EFAULT(oops, sola lettura buffer) o -ENOENT(oops, eseguito dalla directory errata in cui il percorso relativo non funzionava).)
Peter Cordes
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.