即使对于老练的程序员和系统管理员,应用程序开发和故障排除也是艰难的任务。即使有了最好的调试器,程序员有时候仍然希望用简单的打印语句检查应用程序正在执行的操作。IBM AIX V6 增加了一种新的调试工具,ProbeVue。本文简要介绍 ProbeVue的用法以及相关联的编程和脚本语言,并通过一个简单的示例程序演示 ProbeVue的用途和潜在价值。
简介
ProbeVue这种跟踪工具使用户可以动态地跟踪正在运行的程序。ProbeVue的主要接口是 VUE 语言。VUE 既是编程语言,也是脚本语言。VUE 语言与 C 语言和AIX 可用的脚本语言相似。
VUE 语法
ProbeVue脚本的基本形式与结构良好的C程序和awk 脚本相似。Vue脚本文件的一般形式如下:
Variable definitions
Begin {
}
Probe clauses
End {
}
变量部分
在变量部分中定义全局变量。与 C 语言一样,可以在文件中的其它地方指定临时变量。VUE 支持以下变量类型:
C-89数据类型(包括有符号和无符号)short、int、long、long long、float 和double。对于浮点变量的操作只限于简单的赋值表达式和作为 VUE 函数的变量。
String数据类型代表字符串字面值。例如,String fooString[20] 声明一个长度为 20的字符串字面值。只需用fooString = “My String” 初始化 fooString。可以使用+ 操作符连接多个字符串字面值。
List数据类型表示一组整数类型的值。例如,fooList = list() 创建 List fooList。使用append 函数在 fooList 中添加值:append( fooList, value ),其中的value 可以是另一个列表或整数变量。除了append 函数之外,List数据类型还支持 avg() 函数(计算列表的平均值)、min() 函数(判断列表中的最小值)、max() 函数(判断列表中的最大值)和count() 函数(返回列表的大小,即列表中的条目数量)。
probev_timestamp_t是一种特殊的数据类型,用来从 VUE 时间戳函数返回值。返回的值采用AIX 内部格式。
环境变量
在环境变量名称前面加上 $(美元)符号,就可以在 Vue脚本中使用环境变量。在默认情况下,环境变量存储整数值。要想保证传递字符串,环境变量必须用双引号定义变量:export MYENV=\”123\” 传递字符串 123,而 export MYENV=123 传递整数值一百二十三。
除了传递环境变量之外,VUE 还支持几个内置的环境变量:
__CPID是 ProbeVue命令创建的子进程的进程 ID。
__CPTID是线程 ID。