ProbeVue 简介

来源:互联网 发布:淘宝主播怎么找商家 编辑:程序博客网 时间:2024/05/16 08:13
即使对于老练的程序员和系统管理员,应用程序开发和故障排除也是艰难的任务。即使有了最好的调试器,程序员有时候仍然希望用简单的打印语句检查应用程序正在执行的操作。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。




回页首

Begin 部分

begin 部分是 VUE 脚本中用来执行变量初始化的部分。在脚本开始执行时调用这个部分,而且只执行一次。





回页首

探测子句(Probe clauses)

探测子句部分包含程序逻辑。程序员在这个部分中定义各个探测点。下一节详细讨论各种探测类型,这些探测类型包括系统调用、用户函数和内部。

探测类型

Probevue 提供以下探测类型:

  • 系统调用探测
  • 用户函数探测
  • 内部探测




回页首

系统调用探测

系统调用探测(即 syscall 探测)用来探测 libc 库和内核中的函数。可以为函数调用的进入或退出定义探测。系统调用探测的一般形式如下:

 
@@syscall:<process_ID>:<system_call_name>:<entry|exit>

其中:

  • <process_ID> 是要探测的进程(例如,123675 或表示所有进程的 *)
  • <system_call_name> 是要探测的系统调用(例如,read)
  • <entry> 对函数调用的进入执行探测
  • <exit> 对函数调用的退出执行探测

通过使用系统调用探测,可以在 VUE 脚本中使用输入参数和返回值。为了访问输入参数,VUE 脚本必须声明要探测的函数的函数原型。例如:

int read( int fd, char *buf, unsigned long size );

指定这一行,VUE 脚本就能够访问 fd、buf 和 size 参数。使用一个特殊的内置变量 __arg3 捕捉函数的返回值。





回页首

用户函数探测

用户函数探测应用于应用程序代码级探测。用户函数探测的一般形式如下:




本文转自IBM Developerworks中国

      请点击此处查看全文

原创粉丝点击