智慧 5 分钟:使用探测器检测和分析运行时问题

Comments

开发项目的测试阶段中的一个重要工作是:在代码工件上执行运行时测试,以确定一个代码段在运行时的行为。简化此任务的一种不错的方法是,使用专为此工作而设计的自动化框架:Eclipse 平台上的 Probekit 框架了解有关的更多信息)是执行此任务的一项成熟技术。

Probekit 可以帮助您编写和使用探测器,这是一种 Java™ 代码段,该代码可以插入到一个程序中,在程序运行时提供相关信息。(将调用语句插入目标方法中的过程被称为仪表化(instrumentation)。)基本上讲,探测器会打印一条消息,以便识别在程序运行时调用的每种方法。

Eclipse Probekit 与 Rational Application Developer 测试和分析工具的组合,提供了监视和分析您代码的运行时行为的强大技术。

探测器被创建为一个 Probekit 源文件 (*.probe)。源文件可以包含一个或多个探测器,以及方法调用站点探测器;一个探测器包含一种类型的代码段(稍后将更详细介绍)。每个探测器包含:

  • 一个目标。此条目用于指定探测器的过滤条件(探测器应针对的类和方法);它通过指定应针对的包、类和方法的名称来实现此目的。如果没有定义目标,那么探测器会自动采用仪表化的类的所有方法作为目标。
  • 一个导入。这个可选的条目指定了探测器引用的 Java 包和类;他们使用与 Java import 语句相同的语法。
  • 一个或多个代码段。

在两种不同类型的探测器中,方法探测器被插入到一个目标方法的正文中;字节码检测 (byte-code instrumentation, BCI) 引擎(BCI 是一种在加载期间向 Java 类添加字节码的技术)检测包含目标方法的类或 JAR 文件。调用站点探测器被插入到任何调用目标方法的方法的正文中;BCI 引擎检测包含调用目标方法的方法的类或 JAR 文件。

调用站点探测器用于监视从一个项目到系统库的调用,在难以检测包含目标方法的类文件时,也可以使用它们。

探测器是方法探测器还是调用站点探测器取决于探测器代码段类型。代码段从以下方面来定义:

  • 代码段类型的规范。例如,只要启动一个方法,条目代码段 就会运行该探测器。
  • 可由代码段访问的数据项。例如,允许探测器访问类或方法名称。
  • 探测器的逻辑的参数(由插入的 Java 代码段定义)。例如,调用 System.out.println 来显示运行的方法的类和方法名。

免费试用 Rational Application Developer了解探测器的更多信息

可以将代码段定义为在以下时刻运行:

  • 在方法进入时。
  • 在方法退出时(捕获异常的不错方式)。
  • 在异常处理函数运行时。
  • 在类的静态初始化器中的原始代码之前。
  • 在每个可执行的代码单元之前。
  • 调用特定的方法时。

创建您的探测器时,可以将它应用到您项目的类和 JAR 文件;运行项目时,代码段代码会与您的程序一起运行。一个练习 Probekit 和测试探测器的地方是 Rational Application Developer 的免费试用版;该平台支持 Eclipse Probekit。


相关主题


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Rational
ArticleID=992455
ArticleTitle=智慧 5 分钟:使用探测器检测和分析运行时问题
publish-date=12102014