Strace è uno strumento di utilità della riga di comando di debug molto potente che aiuta a risolvere i problemi monitorando le chiamate di sistema e i segnali del programma specifico. Nel caso in cui non abbiamo codice sorgente disponibile, strace può essere utilizzato per analizzare come un programma interagisce con il sistema. In questo articolo, discuteremo alcuni importanti comandi strace per la risoluzione dei problemi e il debug di programmi e processi in Linux.
Installazione
L'installazione di strumenti di utilità strace è un processo semplice e diretto. Usa il comando seguente per installare l'applicazione secondo la tua distribuzione Linux.
Debian/Ubuntu
$ sudo apt install strace
RedHat/CentOS
$ yum install strace
Verifica l'installazione eseguendo il comando seguente
$ strace -V
Uscita:
1.Traccia le chiamate di sistema dei comandi Linux utilizzando strace
Strace è utile durante il tracciamento delle chiamate del sistema di comando di Linux. In questo esempio, un semplice comando pwd viene utilizzato per il tracciamento.
$ strace pwd
Uscita:
2. Reindirizza il registro di traccia in un file
Il registro di traccia delle chiamate di sistema può essere reindirizzato a un file utilizzando il comando strace come:
$ strace -o pwd-log.txt pwd
Usa il comando cat per trovare il contenuto del file come:
$ cat pwd-log.txt
3. Usa strace per stampare il riepilogo delle chiamate di sistema invece del normale output.
L'uso di strace con l'opzione -c consente di stampare il riepilogo del registro. In questo esempio viene presentato un riepilogo del comando linux pwd.
$ strace -c pwd
Uscita:
4. Traccia particolari chiamate di sistema utilizzando strace
Il comando Strace con l'opzione -e e il tipo di traccia (lettura, scrittura) può essere utilizzato per tracciare chiamate di sistema specifiche. In questo esempio, la chiamata di sistema di scrittura viene tracciata per il comando pwd.
$ strace -e trace=write pwd
Uscita:
5. Comando Strace per stampare il timestamp di ogni chiamata di sistema.
Il comando Strace con l'opzione -r può essere utilizzato per stampare tutti i timestamp relativi di ogni chiamata di sistema.
$ strace -r pwd
Uscita:
6. Tracciamento tramite ID processo
Se c'è qualche processo già in esecuzione nel sistema, le chiamate di sistema possono essere tracciate usando il comando strace con l'opzione -p insieme all'id del processo. In questo esempio, l'id di processo di nginx viene utilizzato per la traccia
Sintassi
$ strace -p <process id>
$ strace -p 12842
La traccia può essere interrotta premendo ctrl+c.
7. Comando Strace per stampare l'output di debug
Il comando Strace con l'opzione -d può essere utilizzato per stampare l'output di debug. In questo esempio, per la traccia viene utilizzato un semplice comando Linux pwd.
$ strace -d pwd
Uscita:
8. Comando Strace per stampare il tempo dedicato alle chiamate di sistema.
Il comando Strace con l'opzione -T fornisce il tempo speso per le chiamate di sistema come:
$ strace -T pwd
Uscita:
9. Comando Strace per stampare il puntatore delle istruzioni
Il comando Strace con l'opzione -i stampa il puntatore all'istruzione. In questo esempio, per la traccia viene utilizzato un semplice comando Linux pwd.
$ strace -i pwd
Uscita:
10. Comando Strace per tracciare le chiamate di sistema in base a condizioni specifiche
Il comando Strace può essere utilizzato per tracciare le chiamate di sistema in base a condizioni specifiche come memoria, processo, CPU, ecc. In questo esempio, le chiamate di sistema relative alla gestione della memoria vengono tracciate per un semplice comando Linux pwd.
$ strace -q -e memoria pwd
Uscita:
11. Comando Strace per tracciare le chiamate di sistema relative al segnale
Le chiamate di sistema relative al segnale possono essere tracciate definendo il tipo di traccia nel comando. In questo esempio nc -v -n localhost 80 viene utilizzato per tracciare le chiamate di sistema relative al segnale.
$ strace -e trace=signal nc -v -n 127.0.0.1 80
Uscita:
Conclusione
In questo articolo, abbiamo imparato cos'è lo strumento di utilità strace e quando può essere utilizzato. Inoltre, ho trattato alcuni importanti comandi strace per la risoluzione dei problemi e il debug di chiamate e processi di sistema.