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 字符串函数应用于字符串类型的变量,而不能应用于指针变量。 标准字符串函数(如 strcpystrcat 等)在 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 子句的谓词部分中。