accueil > Gestion des paquets et du système > strace

strace : Suivi des appels système et des signaux

strace est un outil de diagnostic puissant sous Linux qui permet de suivre et d'enregistrer les appels système (syscall) effectués par un processus et les signaux qu'il reçoit. Il permet de comprendre en détail comment un programme interagit avec le noyau, ce qui le rend utile pour le débogage, l'analyse de performance et les audits de sécurité.

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.


Commandes de la même catégorie