Handbuch zur dynamischen Ablaufverfolgung in Solaris

Der Prüfpunkt BEGIN

Der Prüfpunkt BEGIN wird vor jedem anderen Prüfpunkt ausgelöst. Bevor nicht alle BEGIN-Klauseln abgeschlossen sind, wird kein anderer Prüfpunkt ausgelöst. Mit diesem Prüfpunkt lässt sich jeder in anderen Prüfpunkten benötigte Status initialisieren. Das folgende Beispiel zeigt, wie mithilfe des Prüfpunkts BEGIN ein assoziativer Vektor initialisiert werden kann, der mmap(2)-Schutzbits Textrepräsentationen zuweist:

BEGIN
{
	prot[0] = "---";
	prot[1] = "r--";
	prot[2] = "-w-";
	prot[3] = "rw-";
	prot[4] = "--x";
	prot[5] = "r-x";
	prot[6] = "-wx";
	prot[7] = "rwx";
}

syscall::mmap:entry
{
	printf("mmap with prot = %s", prot[arg2 & 0x7]);
}

Der Prüfpunkt BEGIN wird in einem nicht spezifizierten Kontext ausgelöst. Das bedeutet, dass die Ausgabe von stack() oder ustack() sowie der Wert kontextspezifischer Variablen (z. B. execname) beliebig sind. Diese Werte sind nicht zuverlässig und von ihrer Interpretation sollten keine wichtigen Informationen abgeleitet werden. Für den Prüfpunkt BEGIN sind keine Argumente definiert.