当前,在动态跟踪领域还没有标准。posix 只为静态跟踪软件定义了跟踪标准,参见 ibm redbooks
publication ibm aix version 6.1 differences guide(sg24-7559)的第一章。因此,在制定动态跟踪标准之前,在 probevue 和其他 unix 动态跟踪功能之间无法兼容。
动态跟踪的好处和局限性
软件调试常常被认为是在开发系统或测试系统上执行的一项专门任务,这些系统尝试模拟真实的客户生产系统。
但是,由于硬件功能和软件工程最近的发展,这种定义现在已经过时了;这些发展包括:
高端服务器的处理能力和内存能力以及相关的存储技术已经大大增强,这使大型系统可以投入生产环境。
系统集成商开发的专有解决方案(例如,基于 erp 软件的解决方案)实现了许多中间件和几个应用程序层,这也有助于扩大生产系统的规模。
现在的软件大多是多线程的,在许多处理器上运行。因此,根据执行线程的次序不同,两次运行的表现可能不一样:多线程应用程序一般是非确定性的。对于这样的软件,错误现象更难重现和调试。
因此,在当今的 it 基础结构中,如果不能在生产系统本身中执行故障排除,判断问题的根源就会极其昂贵和困难。
probevue 动态跟踪功能提供了在生产系统上检查问题的方法。probevue 可以捕捉执行数据,而不需要安装专门用于调试的应用程序版本,因此不需要重新启动应用程序或重新引导服务器,不会中断服务。
另外,probevue 有助于寻找在长期运行的作业上发生的错误根源;对于这种作业,异常累积的数据、队列溢出和应用程序或内核的其他缺陷常常在运行许多天或几个月之后才会暴露出来。
只要有可用的探测管理器,probevue 就能够检查任何种类的应用程序,所以这种特殊的跟踪工具能够分析复杂的缺陷,比如由于多个子系统之间相互影响产生的故障。只需使用 probevue 这一种跟踪工具,就能够对生产系统进行统一的检查。
请注意下面这些与 probevue 相关的因素:
跟踪可执行程序而无需修改它,这要求用一个控制执行层封装二进制代码。控制执行层会在跟踪点上中断主代码并启动检查代码,从而支持上下文跟踪。通过一个解释器执行被检查的代码,以防止代码中的错误影响应用程序或内核。解释器语言比编译的语言慢;所以,动态解释的跟踪点可能比静态编译的跟踪点慢。
系统管理员和系统集成商需要深入了解应用程序的体系结构,仅仅了解跟踪工具是不够的。如果没有正确设置跟踪点和操作,那么软件检查可能是无效的(还可能会让应用程序更慢)。另外必须记住,在开发阶段越早进行应用程序调试,就越有效,因为软件开发人员更了解应用程序体系结构的内部情况。
由于这些原因,probevue 是一个补充静态跟踪方法的跟踪工具,它可以在正在运行的生产系统中添加新颖的跟踪功能。
probevue 动态跟踪的好处
作为一种动态跟踪功能,probevue 的主要好处如下:
跟踪钩子不需要预编译。probevue 检查未经修改的内核和用户应用程序。
在动态地启用之前,跟踪点或探测并不生效(不存在)。
在启用探测时,动态地提供在探测点上执行的探测操作(由检查代码指定)。
在探测操作中捕捉的跟踪数据可以立即显示在终端输出中,也可以保存到文件中供以后查看。
可以使用 probevue 进行性能分析和问题调试。probevue 可以在生产系统中安全地运行,并对检查代码中的错误提供保护。
随后介绍了probevue 使用的一些术语。后续小节介绍 probevue 使用的编程语言 vue 和用来启动跟踪会话的 probevue 命令。
probevue 术语
probevue 引入了一些与动态跟踪概念相关的术语。下面的列表描述 probevue 使用的术语。
探测(probe)
探测是一种软件机制,它中断正常的系统操作,执行检查并获取关于当前上下文和系统状态的信息。这常常也称为跟踪(tracing)。
跟踪操作(tracing action)或探测操作(probe action)
这两个术语都是指探测所执行的操作。通常情况下,这些操作包括捕捉信息,即把全局信息和与上下文相关的信息的当前值写到跟踪缓冲区中。获得的信息(即捕捉到跟踪缓冲区中的信息)称为跟踪数据(trace data)。系统常常提供使用跟踪的功能;也就是,读取跟踪缓冲区中的数据并把数据提供给用户。
探测点(probe point)
探测点表示在正常系统活动期间可以探测的位置。在使用动态跟踪时,除非对探测点启用探测,否则探测点中不安装任何探测。
启用探测(enabling a probe)就是把一个探测附着到探测点上。
禁用探测(disabling a probe)就是从探测点中删除探测。
触发探测(triggering/firing a probe)是指进入探测并执行跟踪操作的条件。
probevue 支持两种探测点。
探测位置(probe location)
这是用户代码或内核代码中的一个位置,在此位置上会执行某些跟踪操作(例如,捕捉跟踪数据)。如果在一个探测位置上启用了探测,那么当任何线程执行的代码到达此位置时,就会触发探测。
探测事件(probe event)
这是一个抽象事件,当发生此事件时,执行某些跟踪操作。探测事件不能简便地映射到某一代码位置。如果启用表示为探测事件的探测,那么当发生这个抽象事件时,就会触发探测。
probevue 还按照探测类型区分探测点。
探测类型(probe type)
这表示一组具有相同性质的探测点;例如,在进入和退出系统调用时触发的探测,或者在更新系统统计数据时触发的探测。
按照探测类型区分探测,就为各种探测点建立了一个结构。因此,probevue 需要与每个探测类型相关联的探测管理器。
探测管理器(probe manager)
这种软件代码定义具有相同探测类型的一组探测点(例如,系统调用探测管理器)。
vue 编程语言
vue 编程语言用来向 probevue 提供跟踪规格说明。vue 编程语言常常简称为 vue 语言或 vue。
vue 脚本或 vue 程序就是用 vue 编写的程序。可以使用 vue 脚本:
指定动态启用探测的探测点。
指定在触发探测时执行操作必须满足的条件(如果有的话)。
指定要执行的操作,包括要捕捉哪些跟踪数据。
把同一组操作与多个探测点关联起来。
如果喜欢ibm aix 持续可用性: 第 8 部分:probevue - probevue请收藏或告诉您的好朋友.
阅读(188) | 评论(0) | 转发(0) |