Vue 库函数
与用 C、FORTRAN 或本地语言编写的程序不同,用Vue编写的脚本无法访问AIX®系统库或任何用户库提供的子程序。 但是,Vue 支持它自己的特殊内部函数库,该库对于动态跟踪程序非常有用。
- 特定于跟踪的函数
- get_function
- 返回包括当前调查的函数的名称。 从 interval、systrace、BEGIN 和 END 子句中调用 get_function 函数时,该函数将返回空字符串。
- timestamp
- 返回当前时间戳记。
- diff_time
- 查找两个时间戳记之差(以微秒或毫秒计)。
- 跟踪捕获函数
- printf
- 设置变量和表达式值的格式并显示这些值。
- 跟踪
- 在未设置格式的情况下显示数据。
- stktrace
- 设置堆栈跟踪格式并显示。
- 列表函数
- 列表
- 实例化列表变量。
- 追加 (append)
- 将新项目追加到列表。
- sum、max、min、avg 和 count
- 可应用于列表变量的聚集函数。
- C 库函数
- atoi、strstr
- 标准的字符串函数。
- 用于支持试探性跟踪的函数
- start_tentative、end_tentative
- 表示试探性跟踪的开始和结束的指示符。
- commit_tentative、discard_tentative
- 落实或废弃试探性跟踪数据。
- 其他函数
- exit
- 终止 Vue 脚本。
- get_userstring
- 从用户内存读取字符串(或数据)。
- ptree
- 显示调查的进程的进程树。
只能将 Vue 字符串函数应用于字符串类型的变量,而不能应用于指针变量。 标准字符串函数(如 strcpy 和 strcat 等)在 Vue 中不是必需的,因为它们通过语言语法本身来受支持。
ProbeVue 编译器验证传递到 Vue 函数的参数的数据类型。
对于 printf 函数,将进行验证以检查格式字符串中给出的每个格式说明符的 printf 函数中是否提供了参数。 格式说明符的总数和传递给 printf 函数的参数的总数应该相等。 除此之外,还会执行验证以检查传递的参数类型是否与提及的实际类型(作为格式字符串中的格式说明符)兼容。 如果这些检查失败,那么 Probevue 将抛出错误消息。
例如,
printf(“hello world %s, %d\n”, str);
将从编译器抛出一条错误消息,因为没有为 %d传递任何参数。 同样,Printf(“The total count of elements is %d\n”, str);
也会抛出错误消息,因为指定格式为 %d ,而传递的参数 str 变量为字符串。其他功能函数
但是,如果给出
printf (“The total count of elements is %lld\n”, i);
其中 i 是 int 类型的变量,那么不会抛出错误消息,因为变量 i 是请求的格式说明符的兼容类型。 因此,不会进行精确类型检查;但是将进行兼容类型检查。不能将函数放在 Vue 子句的谓词部分中。