DTrace est un framework de traçage toujours disponible, à faible surcharge, disponible sur plusieurs plateformes, incluant Solaris, macOS, Oracle Linux et BSD. DTrace peut tracer le comportement du système d'exploitation et l'exécution des programmes utilisateurs. Il peut afficher les valeurs des arguments et être utilisé pour déduire des statistiques de performance. Les sondes sont contrôlées par des scripts créés par l'utilisateur et écrits dans le langage de script DTrace D. Cela permet une analyse efficace des points de données.
Les sondes PHP qui ne sont pas activement surveillées par le script DTrace D de l'utilisateur ne contiennent pas de code instrumenté, il n'y a donc pas de dégradation des performances lors de l'exécution normale de l'application. Les sondes qui sont surveillées ont un coût de fonctionnement assez faible pour généralement permettre la surveillance de DTrace sur les systèmes de production.
PHP incorpore des sondes de "Traçage Statique Défini par l'Utilisateur" (USDT)
qui sont déclenchées au moment de l'exécution. Par exemple, lorsqu'un script D
surveille la sonde function-entry
de PHP, alors,
chaque fois qu'une fonction du script PHP est appelée, cette sonde est déclenchée et
le code d'action du script D associé est exécuté. Ce code d'action
pourrait, par exemple, imprimer les arguments de la sonde tels que l'emplacement du fichier
source de la fonction PHP. L'action peut également regrouper des données
comme le nombre de fois où chaque fonction est appelée.
Seules les sondes PHP USDT sont décrites ici. Référez-vous à la documentation externe générale et spécifique au système d'exploitation pour voir comment DTrace peut être utilisé pour tracer des fonctions arbitraires, et comment il peut être utilisé pour tracer le comportement du système d'exploitation. Notez que toutes les fonctionnalités de DTrace ne sont pas disponibles dans toutes les implémentations de DTrace.
Les sondes DTrace statiques dans PHP peuvent alternativement être utilisées avec la fonction SystemTap sur certaines distributions Linux.