Strace est un utilitaire CLI utilisé pour vérifier les erreurs dans le système comme permet la surveillance des appels système utilisé par un certain programme et tous les signaux qu'il reçoit. Utilitaire permet à l'utilisateur de surveiller et (depuis la version 4.15) intervenir dans le processus d'interaction entre le programme et le noyauy compris les appels système en cours, les fenêtres contextuelles et les changements d'état des processus
Son fonctionnement est rendu possible par une fonctionnalité du noyau Linux appelée ptrace. Il est similaire à l'application Truss disponible sur d'autres systèmes Unix. Le programme Cygwin fournit un utilitaire similaire. Son utilisation la plus courante est de le démarrer avec le programme en cours de suivi, qui imprime une liste des appels système qu'il exécute.
Il est utile de trouver la cause de l'échec d'un certain programmeou parce qu'il signale des situations dans lesquelles, par exemple, le programme tente d'accéder à un fichier qui n'existe pas ou pour lequel il n'a pas l'autorisation de lecture.
Parmi les caractéristiques qui se démarquent de Strace, les suivantes se démarquent:
- Être capable de spécifier un filtre de nom d'appel système à tracer (en utilisant l'option -e trace =): par nom, tel que clone, fork, vfork; en utilisant l'un des groupes prédéfinis, tels que% ipc ou% file; ou (depuis la version 4.17) en utilisant une syntaxe d'expression régulière, comme clock_ *.
- Spécifiez une liste de routes à tracer (-P /etc/ld.so.cache par exemple).
- Spécifiez une liste de descripteurs de fichiers dont les E / S doivent être vidées
- Compter le temps d'exécution et le nombre d'appels système
- Impression d'horodatages relatifs ou absolus
- Modifier le code de retour et d'erreur des appels système spécifiés et injecter des signaux après l'exécution
- Extraction d'informations sur les descripteurs de fichiers (y compris les sockets).
- Impression de trace de pile, y compris (depuis la version 4.21) le symbole de demande (-k).
- Filtrage par statut de retour syscall
- strace prend en charge le décodage des arguments de certaines classes de commandes ioctl, telles que BTRFS_ *, V4L2_ *, DM_ *, NSFS_ *, MEM *, EVIO *, KVM_ * et plusieurs autres.
Comme strace ne détaille que les appels système, il ne peut pas être utilisé pour détecter autant de problèmes qu'un débogueur de code comme GNU Debugger (gdb). Cependant, il est plus facile à utiliser qu'un débogueur de code et c'est un outil extrêmement utile pour les administrateurs système. Il est également utilisé par les chercheurs pour générer des traces d'appels système pour une relecture ultérieure.
À propos de la nouvelle version de Strace 5.3
Récemment, la nouvelle version de strace 5.3 a été présentée dans laquelle la licence de code est passée de BSD à LGPLv2.1 + et GPLv2 + pour la version d'essai.
Aussi dans les changements qui ressortent qui est là prise en charge du filtrage des appels système en créant des filtres seccomp ("–Seccomp-bpf"), ainsi que le code de retour ("-e status = ...").
Un autre changement qui se démarque dans l'annonce de cette nouvelle version est que les développeurs ont ajouté prise en charge des appels système de décodage pidfd_open et clone3, plus un décodage amélioré des appels système io_cancel, io_submit, s390_sthyi et syslog.
Également dans l'annonce, il est souligné que La commande ioctl répertorie la synchronisation avec le noyau Linux 5.3
Des autres changements mentionnés dans l'annonce sont:
- Amélioration du décodage du protocole NETLINK_ROUTE
- L'attribut de liaison réseau décodé UNIX_DIAG_UID et les commandes WDIOC_ * ioctl
- Les listes de constantes AUDIT_ *, BPF_ *, ETH_ *, KEYCTL_ *, KVM_ *, MAP_ *, SO_ *, TCP_ *, V4L2_ *, XDP_ * et * _MAGIC ont été mises à jour
Comment installer strace 5.3 sur Ubuntu et ses dérivés?
L'utilitaire Strace se trouve dans les référentiels Ubuntu ainsi que ses dérivés, mais aussi loin que à cette nouvelle version, il n'a pas été inclus dans les référentiels. L'installation via les référentiels peut être effectuée en exécutant la commande suivante:
sudo apt install strace
Maintenant pour ceux qui veulent installer cette nouvelle version, ils doivent télécharger le code source et compiler sur votre système.
Ils téléchargent le code source avec:
git https://gitlab.com/strace/strace.git
Ils entrent avec:
cd strace
Et ils compilent avec:
./configure && make && make install
Enfin concernant l'utilisation, vous pouvez trouver quelques guides sur le net.