Manuel de suivi dynamique Solaris

Fichiers interpréteurs

De même que votre shell et des utilitaires comme awk(1) et perl(1), vous pouvez utiliser dtrace(1M) pour créer des fichiers interpréteurs exécutables. Un fichier interpréteur commence par une ligne se présentant comme suit :

#! nom_chemin arg

pathname correspondant au chemin de l'interpréteur et arg à un argument en option simple. Lorsqu'un fichier interpréteur est exécuté, le système invoque l'interpréteur spécifié. Si arg a été spécifié dans le fichier interpréteur, il est transmis sous forme d'argument à l'interpréteur. Le chemin d'accès au fichier interpréteur lui-même, ainsi que tous les arguments supplémentaires spécifiés lors de son exécution sont ajoutés à la liste des arguments de l'interpréteur. Par conséquent, vous devrez toujours créer des fichiers interpréteurs DTrace à l'aide d'au moins les arguments suivants :

#!/usr/sbin/dtrace -s

Si votre fichier interpréteur est exécuté, l'argument à l'option - s sera donc le nom du chemin d'accès au fichier interpréteur lui-même. dtrace va ensuite lire, compiler et exécuter ce fichier comme si vous aviez tapé la commande suivante dans votre shell :


# dtrace -s interpreter-file

L'exemple suivant montre comment créer et exécuter un fichier interpréteur dtrace. Entrez le code source en langage D suivant et enregistrez-le dans le fichier interp.d :

#!/usr/sbin/dtrace -s
BEGIN
{
	trace("hello");
	exit(0);
}

Marquez le fichier interp.d comme exécutable et exécutez-le comme suit :


# chmod a+rx interp.d
# ./interp.d
dtrace: script './interp.d' matched 1 probe
CPU     ID                    FUNCTION:NAME
  1      1                           :BEGIN   hello
#

N'oubliez pas que la directive #! doit comprendre les deux premiers caractères de votre fichier sans espace intermédiaire ou précédent. Le compilateur D ignore automatiquement cette ligne lorsqu'il traite le fichier interpréteur.

dtrace utilise getopt(3C) pour traiter les options de ligne de commande de manière à vous permettre de combiner plusieurs options dans votre argument interpréteur unique. Par exemple, pour ajouter l'option -q à l'exemple précédent, vous pouvez modifier la directive de l'interpréteur comme suit :

#!/usr/sbin/dtrace -qs

Si vous spécifiez plusieurs lettres d'option, l'option -s doit toujours terminer la liste d'options booléennes de sorte que l'argument suivant (le nom du fichier interpréteur) soit traité comme un argument correspondant à l'option -s.

Si vous devez spécifier plus d'une option nécessitant un argument dans votre fichier interpréteur, vous ne pourrez pas intégrer toutes vos options et tous vos arguments dans l'argument interpréteur unique. Utilisez plutôt la syntaxe de directive #pragma D option pour définir vos options. Toutes les options de ligne de commande de dtrace possèdent un équivalent #pragma que vous pouvez utiliser, comme illustré dans le Chapitre16Options et paramètres réglables.