Aperçu
strace suit les appels système et les événements de signal pour un programme donné ou se connecte à un processus en cours d'exécution pour afficher ces informations en temps réel. Ceci est essentiel pour comprendre le comportement de bas niveau d'un programme, y compris les opérations d'E/S de fichiers, la communication réseau et la gestion de la mémoire.
Fonctionnalités principales
- Suivi des appels système et des signaux d'un processus
- Affichage des arguments, valeurs de retour et codes d'erreur de chaque appel
- Connexion à un processus en cours d'exécution pour le suivi
- Suivi des processus enfants également
- Filtrage des appels système ou des signaux spécifiques
Options principales
strace offre diverses options pour contrôler finement la méthode de suivi et le format de sortie.
Options de suivi de base
Contrôle de la sortie
Filtrage
Commande générée :
Essayez de combiner les commandes.
Description:
`strace` Exécute la commande.
Essayez d'exécuter virtuellement les commandes avec l'IA en combinant les options ci-dessus.
Exemples d'utilisation
Divers exemples d'utilisation de strace.
Suivi d'une commande simple
strace ls
Suit les appels système de la commande `ls`.
Enregistrer les résultats du suivi dans un fichier
strace -o date_trace.log date
Enregistre les appels système de la commande `date` dans le fichier `date_trace.log`.
Suivre un processus en cours d'exécution
strace -p 12345
Se connecte à un processus avec le PID 12345 pour suivre ses appels système. (Remplacez le PID par l'ID de processus réel.)
Suivre également les processus enfants
strace -f bash -c "echo Hello, strace!"
Lors de l'exécution de la commande `echo` dans un shell `bash`, suit les appels système de `bash` et `echo`.
Filtrer uniquement certains appels système
strace -e trace=open,read,write cat /etc/hosts
Suit si la commande `cat /etc/hosts` utilise les appels système `open`, `read`, `write`.
Vérifier le temps d'exécution des appels système
strace -T ls
Affiche le temps passé pour chaque appel système.
Installation
strace n'est peut-être pas inclus par défaut dans la plupart des distributions Linux. Vous pouvez l'installer en utilisant les commandes suivantes.
Debian/Ubuntu
sudo apt update && sudo apt install strace
Installez en utilisant le gestionnaire de paquets APT.
CentOS/RHEL 7
sudo yum install strace
Installez en utilisant le gestionnaire de paquets YUM.
Fedora/RHEL 8+
sudo dnf install strace
Installez en utilisant le gestionnaire de paquets DNF.
Conseils et précautions
strace est puissant, mais il y a quelques points à considérer lors de son utilisation.
Impact sur les performances
strace intercepte les appels système d'un processus, il peut donc avoir un impact significatif sur les performances du programme suivi. C'est particulièrement vrai pour les programmes avec beaucoup d'E/S. Utilisez-le avec prudence dans les environnements de production.
Interprétation de la sortie
La sortie de strace peut être très volumineuse. Il est donc conseillé de filtrer les informations nécessaires (-e) ou de les enregistrer dans un fichier (-o) pour analyse. Vous pouvez obtenir des informations détaillées sur un appel système spécifique en utilisant la commande `man 2 <nom_syscall>`.
Permissions
Vous avez besoin des privilèges `root` pour suivre les processus d'autres utilisateurs ou pour suivre le comportement général du système.
Différence avec les outils de débogage
strace fonctionne au niveau des appels système. Contrairement aux débogueurs comme `gdb`, il ne permet pas de manipuler directement les variables internes du programme ou d'afficher la pile d'appels. Les deux outils peuvent être utilisés de manière complémentaire.