Scripts Vue

Contrairement aux procédures dans les langages procéduraux, un bloc d'action dans Vue n'a pas de valeur de sortie ou de retour.

Contrairement aux procédures dans les langages procéduraux, un bloc d'action dans Vue n'a pas de valeur de sortie ou de retour. Il ne prend pas non plus en charge un ensemble de paramètres d'entrée. D'autre part, les données de contexte au point où une sonde est entrée sont accessibles dans le bloc d'action. Par exemple, les paramètres transmis à une fonction peuvent être référencés dans le bloc d'actions d'une clause Vue si le point de sonde se trouve au point d'entrée de la fonction.

Prédicats

Vous devez utiliser des prédicats lorsque l'exécution des clauses aux points d'analyse doit être effectuée de manière conditionnelle. La section de prédicat est identifiée par la présence du mot clé when immédiatement après la section de spécification de sonde. Le prédicat lui-même se compose d'expressions conditionnelles de style C régulières avec les parenthèses fermantes.

Un prédicat a le format suivant:
  	when ( <condition> )
Par exemple :
when ( __pid == 1678 )

Exemple de scriptVue

Le script suivant est un exemple de script Vue :

/* Global variables are auto-initialized to zero */ [1]

	int count; /[2]
	/* 
	 * File: count.e
	 *
	 * Count number of times the read or write system call is entered
	 * by process with Id 400 
	 */

	@@BEGIN
	{
		printf("Start probing\n");
	}

	@@syscall:*:read:entry, @@syscall:*:write:entry [3]
		when (__pid == 400)[4]

	{[5]

		count++;
		/* Print a message for every 20 system calls */
		if (count % 20 == 0)
			printf("Total read/writes so far: %d\n", count);
		/* Exit when we exceed 100 system calls */
		if (count > 100)
			exit();
	} [6]

	/* print some statistics at exit */
	@@END
	{
		printf("Terminating probe after %d system calls.\n", count);
	}

Les exposants suivants utilisés dans l'exemple ci-dessus identifient les différents éléments d'un script Vue :

  1. Commentaires
  2. (Facultatif) Section Déclaration
  3. Spécification de sonde
  4. (Facultatif) Prédicat
  5. Début du bloc d'action
  6. Bloc de fin d'action

Vous pouvez démarrer ce script simple en exécutant la commande suivante. Notez que cet exemple affiche un exemple de sortie.

# probevue count.e
	Total read/writes so far: 20
	Total read/writes so far: 40
	Total read/writes so far: 60
	...
	...

L'exécution de la commande probevue requiert des privilèges. Pour exécuter correctement la commande ci-dessus, vous devez vous être connecté en tant que superutilisateur ou avoir reçu des privilèges permettant de sonder les appels système effectués par n'importe quel processus du système.