动态跟踪工具
2009-09-06 00:00:00 来源:WEB开发网核心提示: 声明部分包含声明语句,它们声明后续子句中使用的局部和全局变量,动态跟踪工具(4),它可以包含:_ 类型、结构、联合体和枚举定义,_ 要探测的函数的函数原型声明,例如:-@@uft:34568:*:foo:entry这指定在进程 ID 为 34568 的进程中在进入任何名为 foo() 的函数时触
声明部分包含声明语句,它们声明后续子句中使用的局部和全局变量。
它可以包含:
_ 类型、结构、联合体和枚举定义。
_ 要探测的函数的函数原型声明。
_ 脚本中要访问的全局和内核变量的声明。
Vue 语言支持大多数 C 操作符和 C-89 数据类型,还有它自己的内置变量 (_pid, _tid) 和函数 (stacktrace, timestamp)。
例如:
int count; /* user defined global counter variable */
每个探测子句由一个探测点指定语句、动作块和可选的断言组成。
探测点指定语句指定应该触发探测动作的代码位置或事件。
AIX 6.1.0 支持下面的探测类型:
用户函数进入探测(即 uft 探测)
系统调用进入/退出探测(即 syscall 探测)
以特定的时间间隔触发的探测(即 interval 探测)
探测点指定语句格式
@@<probetype>:<一个或多个与探测类型相关的字段,由冒号分隔>
每个探测点至少包含三个字段。
第一个字段总是指定探测类型,由此指定它的探测管理器。
对于支持与进程相关的跟踪的探测管理器,第二个字段必须是进程 ID。
对于支持函数进入或退出探测的探测管理器,位置字段(最后一个字段)必须使用 “entry” 或 “exit” 关键字。
字段由冒号(“:”)分隔。
探测点元组字段中的星号(“*”)表示与这个字段的任何可能值匹配。
例如:
- @@uft:34568:*:foo:entry
这指定在进程 ID 为 34568 的进程中在进入任何名为 foo() 的函数时触发探测。第三个字段中的星号表示,在这个进程的任何模块中找到的 foo() 函数都应该探测。
更多精彩
赞助商链接