BEGIN 探测器在任何其他探测器之前触发。在所有 BEGIN 子句完成之前,将不会再触发任何其他探测器。此探测器可用于初始化其他探测器中需要的任何状态。以下示例说明如何使用 BEGIN 探测器初始化用于在 mmap(2) 保护位和文本说明之间进行映射的关联数组:
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]); }
BEGIN 探测器在未指定的上下文中触发。这表示,stack() 或 ustack() 的输出以及特定于上下文的变量(例如,execname)的值都是任意的。不应依赖于这些值,或者解释这些值来推断任何有意义的信息。BEGIN 探测器未定义任何参数。