strace
est un outil en ligne de commande utilisé pour tracer les appels système et les signaux reçus par un processus. Il est particulièrement utile pour le dépannage, la surveillance et l'analyse des performances des applications. strace
permet de voir ce que fait un programme au niveau des appels système, ce qui peut aider à identifier les problèmes de performance ou les comportements inattendus.
Installation
strace
est généralement installé par défaut sur la plupart des distributions Linux. Si ce n'est pas le cas, vous pouvez l'installer en utilisant le gestionnaire de paquets de votre distribution :
Debian/Ubuntu :
sudo apt-get install strace
CentOS/RHEL :
sudo yum install strace
Fedora :
sudo dnf install strace
Utilisation de Base
Pour tracer les appels système d'un programme, utilisez la commande suivante :
strace <commande>
Par exemple, pour tracer les appels système de la commande ls
:
strace ls
Options de Base
-p : Attacher strace
à un processus en cours d'exécution.
strace -p <PID>
-e : Filtrer les appels système à tracer.
strace -e trace=open,close <commande>
-o : Rediriger la sortie vers un fichier.
strace -o output.txt <commande>
-f : Suivre les processus enfants (forks).
strace -f <commande>
-t : Afficher l'heure de chaque appel système.
strace -t <commande>
-T : Afficher le temps passé dans chaque appel système.
strace -T <commande>
-c : Afficher un résumé des appels système avec des statistiques.
strace -c <commande>
Exemples de Commandes Avancées
Tracer les appels système d'un processus en cours d'exécution :
strace -p 1234
Filtrer les appels système pour ne tracer que open
et close
:
strace -e trace=open,close ls
Rediriger la sortie de strace
vers un fichier :
strace -o output.txt ls
Suivre les processus enfants (forks) :
strace -f ls
Afficher l'heure de chaque appel système :
strace -t ls
Afficher le temps passé dans chaque appel système :
strace -T ls
Afficher un résumé des appels système avec des statistiques :
strace -c ls
Filtrage des Appels Système
Vous pouvez filtrer les appels système à tracer en utilisant l'option -e
:
Tracer uniquement les appels système open
:
strace -e trace=open ls
Tracer tous les appels système sauf open
:
strace -e trace=!open ls
Tracer les appels système open
et close
:
strace -e trace=open,close ls