Strace, un'utilità Cli per intercettare e registrare le chiamate di sistema

statistiche-strace

Strace è un'utilità CLI utilizzata per verificare la presenza di errori nel sistema come consente il monitoraggio delle chiamate di sistema utilizzato da un determinato programma e da tutti i segnali che riceve. Utilità consente all'utente di monitorare e (dalla versione 4.15) intervenire nel processo di interazione tra il programma e il corecomprese le chiamate di sistema in corso, i popup e le modifiche allo stato del processo

Il suo funzionamento è reso possibile da una funzionalità del kernel Linux chiamata ptrace. È simile all'applicazione truss disponibile su altri sistemi Unix. Il programma Cygwin fornisce un'utilità simile. Il suo utilizzo più comune è quello di avviarlo insieme al programma che si sta tracciando, che stampa un elenco delle chiamate di sistema che esegue.

È utile per scoprire la causa del fallimento di un determinato programmaoppure perché segnala situazioni in cui, ad esempio, il programma sta tentando di accedere a un file che non esiste o per il quale non dispone dei permessi di lettura.

Tra le caratteristiche che si distinguono da Strace, spiccano:

  • Essere in grado di specificare un filtro per il nome della chiamata di sistema da tracciare (utilizzando l'opzione -e trace =): per nome, come clone, fork, vfork; utilizzando uno dei gruppi predefiniti, come% ipc o% file; o (dalla versione 4.17) utilizzando la sintassi delle espressioni regolari, come clock_ *.
  • Specificare un elenco di rotte da tracciare (-P /etc/ld.so.cache per esempio).
  • Specificare un elenco di descrittori di file il cui I / O deve essere scaricato
  • Contare il tempo di esecuzione e il conteggio delle chiamate di sistema
  • Stampa di timestamp relativi o assoluti
  • Modifica il codice di ritorno e di errore delle chiamate di sistema specificate e inietta i segnali dopo l'esecuzione
  • Estrazione di informazioni sui descrittori di file (inclusi i socket).
  • Stampa della traccia dello stack, incluso (dalla versione 4.21) il simbolo di richiesta (-k).
  • Filtraggio per stato di ritorno syscall
  • strace supporta la decodifica degli argomenti di alcune classi di comandi ioctl, come BTRFS_ *, V4L2_ *, DM_ *, NSFS_ *, MEM *, EVIO *, KVM_ * e molte altre.

Poiché strace descrive solo le chiamate di sistema, non può essere utilizzato per rilevare tanti problemi quanto un debugger di codice come GNU Debugger (gdb). Tuttavia, è più facile da usare rispetto a un debugger di codice ed è uno strumento estremamente utile per gli amministratori di sistema. Viene anche utilizzato dai ricercatori per generare tracce di chiamate di sistema per la riproduzione successiva.

Informazioni sulla nuova versione di Strace 5.3

Recentemente è stata presentata la nuova versione di strace 5.3 in cui la licenza del codice è cambiata da BSD a LGPLv2.1 + e GPLv2 + per la versione di prova.

Anche all'interno dei cambiamenti che risaltano che c'è supporto per il filtraggio delle chiamate di sistema mediante la creazione di filtri seccomp ("–Seccomp-bpf"), così come il codice di ritorno ("-e status = ...").

Un altro cambiamento che spicca nell'annuncio di questa nuova versione è che gli sviluppatori hanno aggiunto supporto per chiamate di sistema di decodifica pidfd_open e clone3, oltre a una decodifica migliorata delle chiamate di sistema io_cancel, io_submit, s390_sthyi e syslog.

Anche nell'annuncio viene evidenziato questo Gli elenchi di comandi ioctl si sincronizzano con il kernel Linux 5.3

Delle altre modifiche menzionati nell'annuncio sono:

  • Decodifica del protocollo NETLINK_ROUTE migliorata
  • L'attributo del collegamento di rete decodificato UNIX_DIAG_UID e i comandi WDIOC_ * ioctl
  • Gli elenchi delle costanti AUDIT_ *, BPF_ *, ETH_ *, KEYCTL_ *, KVM_ *, MAP_ *, SO_ *, TCP_ *, V4L2_ *, XDP_ * e * _MAGIC sono stati aggiornati

Come installare strace 5.3 su Ubuntu e derivati?

L'utilità Strace può essere trovata nei repository di Ubuntu e nei suoi derivati, ma per quanto riguarda i file a questa nuova versione, non è stato incluso nei repository. L'installazione tramite i repository può essere eseguita eseguendo il seguente comando:

sudo apt install strace

Ora per chi volesse installare questa nuova versione dovrebbe scaricare il codice sorgente e compilare sul tuo sistema.

Scaricano il codice sorgente con:

git https://gitlab.com/strace/strace.git

Entrano con:

cd strace

E si compilano con:

./configure && make && make install

Infine per quanto riguarda l'utilizzo, puoi trovare alcune guide in rete.


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile dei dati: Miguel Ángel Gatón
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.