Il n'est pas vraiment possible de "stracer tout le système" à partir de l'espace utilisateur. Comme je l'ai indiqué dans la question précédente que vous avez posée, le meilleur moyen est d'utiliser une infrastructure de traçage en mode noyau telle que kprobes
, systemtap
或いは dtrace
. Avez-vous examiné l'un d'entre eux ? Y a-t-il une raison pour laquelle aucune d'entre elles ne conviendrait à votre cas d'utilisation ?
La seule façon de tracer de manière vraiment fiable l'ensemble du système depuis l'espace utilisateur serait de commencer votre trace avec la commande init
processus... mais je ne suis pas sûr que init
o systemd
serait très heureux que vous le mettiez en stracing, car il fait beaucoup de choses de très bas niveau qui sont assez fragiles et faciles à casser (et difficile d'injecter des commandes wrapper autour, je pourrais ajouter).
C'est pourquoi les mécanismes de sondage de la plus haute qualité ont un certain type de module de noyau, parce que le noyau "voit tout". Ceci est particulièrement pertinent lorsque vous essayez de surveiller l'activité de périphériques de caractères tels que /dev/console
y /dev/tty*
Le noyau a un contrôle direct sur les appels à ces périphériques puisqu'ils sont implémentés dans l'espace noyau.