Strace est un outil utilitaire de ligne de commande de débogage très puissant qui aide à résoudre les problèmes en surveillant les appels système et les signaux du programme spécifique. Si nous n'avons pas de code source disponible, strace peut être utilisé pour analyser comment un programme interagit avec le système. Dans cet article, nous aborderons certaines commandes strace importantes pour dépanner et déboguer des programmes et des processus sous Linux.
Installation
L'installation des outils utilitaires strace est un processus simple et simple. Utilisez la commande suivante pour installer l'application selon votre distribution Linux.
Debian/Ubuntu
$ sudo apt install strace
RedHat/CentOS
$ yum install strace
Vérifiez l'installation en exécutant la commande suivante
$ strace -V
Sortie :
1.Tracer les appels système de la commande Linux à l'aide de strace
Strace est utile lors du suivi des appels système de commande Linux. Dans cet exemple, une simple commande pwd est utilisé pour le traçage.
$ strace pwd
Sortie :
2. Rediriger le journal de trace dans un fichier
Le journal de suivi des appels système peut être redirigé vers un fichier à l'aide de la commande strace comme :
$ strace -o pwd-log.txt mot de passe
Utilisez la commande cat pour trouver le contenu du fichier comme :
$ cat pwd-log.txt
3. Utilisez strace pour imprimer le résumé des appels système au lieu de la sortie normale.
L'utilisation de strace avec l'option -c permet d'imprimer le résumé du journal. Dans cet exemple, un résumé de la commande linux pwd est présenté.
$ strace -c pwd
Sortie :
4. Tracez des appels système particuliers à l'aide de strace
La commande Strace avec l'option -e et le type de trace (lecture, écriture) peut être utilisée pour tracer des appels système spécifiques. Dans cet exemple, l'appel système write est tracé pour la commande pwd.
$ strace -e trace=write pwd
Sortie :
5. Commande Strace pour imprimer l'horodatage de chaque appel système.
La commande Strace avec l'option -r peut être utilisée pour imprimer tous les horodatages relatifs de chaque appel système.
$ strace -r pwd
Sortie :
6. Traçage à l'aide de l'ID de processus
Si un processus est déjà en cours d'exécution dans le système, les appels système peuvent être suivis à l'aide de la commande strace avec l'option -p avec l'ID du processus. Dans cet exemple, l'ID de processus de nginx est utilisé pour le traçage
Syntaxe
$ strace -p <process id>
$ strace -p 12842
Le traçage peut être arrêté en appuyant sur ctrl+c.
7. Commande Strace pour imprimer la sortie de débogage
La commande Strace avec l'option -d peut être utilisée pour imprimer la sortie de débogage. Dans cet exemple, une simple commande Linux pwd est utilisée pour le traçage.
$ strace -d pwd
Sortie :
8. Commande Strace pour imprimer le temps passé sur les appels système.
La commande Strace avec l'option -T donne le temps passé sur les appels système comme :
$ strace -T pwd
Sortie :
9. Commande Strace pour imprimer le pointeur d'instruction
La commande Strace avec l'option -i imprime le pointeur d'instruction. Dans cet exemple, une simple commande Linux pwd est utilisée pour le traçage.
$ strace -i pwd
Sortie :
10. Commande Strace pour tracer les appels système en fonction d'une condition spécifique
La commande Strace peut être utilisée pour suivre les appels système en fonction de conditions spécifiques telles que la mémoire, le processus, le processeur, etc. Dans cet exemple, les appels système liés à la gestion de la mémoire sont suivis pour une simple commande Linux pwd.
$ strace -q -e mot de passe mémoire
Sortie :
11. Commande Strace pour tracer les appels système liés au signal
Les appels système liés au signal peuvent être suivis en définissant le type de suivi dans la commande. Dans cet exemple nc -v -n localhost 80 est utilisé pour tracer les appels système liés au signal.
$ strace -e trace=signal nc -v -n 127.0.0.1 80
Sortie :
Conclusion
Dans cet article, nous avons appris ce qu'est l'outil utilitaire strace et quand il peut être utilisé. J'ai également couvert certaines commandes strace importantes pour dépanner et déboguer les appels et processus système.