In questo articolo impareremo come utilizzare Linux Strace Command. Strace è un potente strumento da riga di comando per il debug e la risoluzione dei problemi dei programmi nel sistema operativo Linux. Cattura e registra tutte le chiamate di sistema effettuate da un processo ei segnali ricevuti dal processo.
Visualizza il nome di ogni chiamata di sistema insieme ai suoi argomenti racchiusi tra parentesi e il suo valore di ritorno all'errore standard; puoi anche reindirizzarlo facoltativamente a un file.
Normalmente strace è disponibile per impostazione predefinita se non è presente nel tuo sistema install strace utilizzando il seguente comando:
dnf install strace

Puoi eseguire un comando con strace o passargli un PID usando l'opzione -p come nei seguenti esempi:
Traccia le chiamate del sistema di comando Linux:
In questo esempio eseguiremo semplicemente un comando "df -h" seguito da strace per tenere traccia delle chiamate di sistema per il comando df -h.
strace df -h
L'output sarà simile a questo:


Dall'output sopra, puoi vedere vari tipi di chiamate di sistema effettuate dal comando df -h, ad esempio “open(“/etc/ld.so.cache”, O_RDONLY|O_CLOEXEC) =3″
Dove,
- aperto – è il tipo di chiamata di sistema
- (“/etc/ld.so.cache”, O_RDONLY|O_CLOEXEC) – argomento della chiamata di sistema
- 3 – valore restituito dalla chiamata di sistema
Traccia il PID del processo Linux:
Se un processo è già in esecuzione, puoi tracciarlo semplicemente passando il suo PID a strace; questo riempirà lo schermo con l'output continuo che mostra le chiamate di sistema effettuate dal processo, per terminarlo, premi CTRL + C.
strace -p 7302


Per ottenere un riepilogo del tempo totale, delle chiamate e degli errori di una chiamata di sistema, utilizzare il flag -c come mostrato di seguito;
strace -pc 7583

Stampa puntatore istruzioni durante la chiamata di sistema:
Il flag -i mostra il puntatore dell'istruzione al momento di ogni chiamata di sistema effettuata dal programma.
strace -i df -h



Mostra ora ogni riga di output di traccia:
Puoi anche stampare l'ora corrente per ogni riga nell'output della traccia, passando il flag -t.
strace -t df -h


Stampa il tempo di comando speso nelle chiamate di sistema:
Per mostrare la differenza di tempo tra l'inizio e la fine di ogni chiamata di sistema effettuata da un programma, utilizzare l'opzione -T.
strace -T df -h

Traccia solo chiamate di sistema specifiche:
Nel comando seguente trace=write è noto come un'espressione qualificante, dove "trace" è un qualificatore (altri includono signal, abrev, verbose, raw, read o write) e "write" è il valore del qualificatore.
Il comando seguente mostra effettivamente le chiamate di sistema per stampare l'output df -h sullo standard output.
strace -e trace=write df -h

Alcuni comandi aggiuntivi sul qualificatore di traccia sono i seguenti:
strace -e trace=open,close df -h
strace -e trace=open,close,read,write df -h
strace -e trace=all df -h
Traccia le chiamate di sistema in base a una determinata condizione:
Vedremo come tracciare le chiamate di sistema relative a una data classe di eventi. Il comando seguente può essere utilizzato per tracciare tutte le chiamate di sistema che coinvolgono la gestione dei processi.
strace -q -e trace=process df -h

Quindi, per tracciare tutte le chiamate di sistema che accettano un nome file come argomento, utilizzare il comando seguente:
strace -q -e trace=file df -h

Allo stesso modo, puoi tracciare tutte le chiamate di sistema relative alla rete, alla memoria e ai segnali utilizzando i seguenti comandi:
strace -q -e trace=memory df -h
strace -e trace=network df -h
strace -e trace=signal df -h
Reindirizza l'output di traccia su file:
Per scrivere i messaggi di traccia inviati allo standard error in un file, utilizzare l'opzione -o. Ciò significa che sullo schermo viene stampato solo l'output del comando come mostrato di seguito.
strace -o strace_message.txt df -h

Tutte le chiamate di sistema sono state scritte nel file strace_message.txt. Usa il comando cat per vedere le chiamate di sistema.
cat strace_message.txt

Mostra output di debug di Strace:
Per mostrare le informazioni di debug per lo strumento strace, usa il flag -d.
strace -d df -h

In conclusione, strace è uno strumento per diagnosticare la causa del fallimento del programma. è un potente strumento per il debug e la risoluzione dei problemi. È praticamente utile per amministratori di sistema esperti, programmatori e hacker.