练习 1.2:创建第一个探针
在开始之前,必须已完成练习 1.1:导入必需的资源。
您要创建的探针在程序中的方法进入时报告。
创建探针涉及三个主要任务:
- 创建空的 Probekit 源文件
- 创建 Probekit 源文件内容
- 检查探针
创建空的 Probekit 源文件
我们将在 Probekit 源文件本身的项目中创建该文件。(也可以在和应用程序相同的项目中创建探针,但必须将项目转换为 Probekit 项目才能构建探针。)
- 创建新的保存该探针的 Java 项目:
- 从 Software Development Platform 菜单栏中,单击文件 > 新建 > 项目。“新建项目”对话框打开。
- 展开 Java 条目,然后选择 Java 项目并单击下一步。打开“新建 Java 项目”对话框。
- 在“项目名称”字段中,输入 RandomNumbersProbe 并单击完成。
条目 RandomNumbersProbe 添加到“包资源管理器”视图中。
- 将项目转换成 Probekit 项目:
- 在“包资源管理器”视图中,右键单击刚刚创建的 RandomNumbersProbe 项目,然后单击新建 > 其它。“新建”对话框打开。
- 选中显示所有向导,然后展开“概要分析与记录日志”条目。
- 选择将 Java 项目转换成 Probekit 项目,并单击下一步。
- 如果打开了“确认启用”对话框,单击总是启用功能,不要再次询问,然后单击确定。
打开“将 Java 项目转换成 Probekit 项目”对话框。
- 确保只选中了 RandomNumbersProbe 项目,然后单击完成。
- 在 RandomNumbersProbe 项目中创建新 Probekit 源文件:
- 在“包资源管理器”视图中,右键单击 RandomNumbersProbe,然后单击新建 > 文件。打开“新建文件”对话框。
- 选择 RandomNumbersProbe 使其成为父文件夹。
- 在“文件名”字段中,输入 RandomNumbersProbe.probe(扩展名 .probe 是必需的),然后单击完成。
条目 RandomNumbersProbe.probe 添加到“包资源管理器”视图中。打开 Probekit 编辑器与“问题”视图。
现在在 Probekit 源文件本身的项目中有一个空的 Probekit 源文件。由于文件在 Probekit 项目中,并且在工作空间中启用了“自动构建”,探针编译器已尝试编译此源文件。
因为空文件不是有效的 Probekit 源文件,“问题”视图报告一条错误。
创建 Probekit 源文件内容
您现在将使用 Probekit 编辑器来创建探针。
每个探针定义都包含一个定义探针的逻辑的段。您要创建的探针包含一个类型为“entry”的 Java 代码段。“entry”段是在您正调查的程序中指定方法的方法进入时间触发的段。在此探针中,只要有方法进入,“entry”段将打印出类和方法名。
为此,需要编写该段的源代码,还需要定义该段必须可以访问的两个数据,类名和方法名。
注意:Probekit 除了“entry”段之外也支持其它类型的段。例如,您也可以编写当指定的方法退出时或指定的方法处理异常时运行的段。有关详细信息,请参阅帮助系统。
您将用这种方式编写探针以便应用到所有类和方法。然而,当您运行它时,将通过过滤系统类来缩小其范围,作为启动过程的一部分。
要创建探针:
- 在 Probekit 编辑器的较低边缘处,单击探针选项卡。(“常规”页中的条目是可选的;可以使用它们来保存记录。)
- 单击添加探针。将在该编辑器左边的树形窗格中添加了一个 Probe 条目。
- 右键单击新创建的 Probe 条目并单击新建 > 段。将在该树形窗格的 Probe 条目下面添加一个 Fragment 条目。缺省情况下,作为“entry”段创建段。(注意,entry 也是 Probekit 编辑器右边的编辑窗格中“段类型”字段中的选择。)
- 双击 Probekit 编辑器视图的选项卡以放大该编辑器,以便您可以看到整个编辑窗格。(再次双击该选项卡会将视图恢复到其原始大小。)
- 创建一个变量以保存想要定义的第一个数据项,类名:
- 在“数据项”下面的编辑窗格中,单击添加。将添加类型为“className”的缺省数据项。
- 单击编辑。
- 在“编辑数据项”对话框中的“名称”字段中,输入 cname 作为变量名称,然后单击确定。
- 创建一个变量以保存第二个数据项,方法名:
- 再次单击添加,然后单击编辑以编辑刚刚添加的数据项。
- 对于“数据类型”,从列表中选择 methodName。
- 在“名称”字段中,输入 mname 作为变量名,然后单击确定。
- 在“Java 代码”区域,输入以下代码行:
System.out.println("[Enter method " + cname + "." + mname + "]");
- 从菜单栏中,选择文件 > 保存。
探针编译器将自动编译来自其源代码的探针。
检查探针
保存探针时,探针编译器在“问题”视图中报告错误。检查“问题”视图以查看是否有错误情况。
如果有错误,在“探针”编辑器中纠正错误并再次保存该探针。
两类错误可以在“问题”视图中报告:
- 一类错误是 Probekit 源文件中的结构错误。例如,Probe 元素不能包含相同类型的两个段。“问题”视图在“资源”列中将此类错误报告为探针源文件中的错误。
- 另一类错误在探针段的 Java 源代码组件中。因为 Probekit 内部构造的方式,这些错误实际上是针对不同文件报告的,在这种情况下,Probekit 生成的文件将命名为 RandomNumbersProbe_probe.java。
如果在“问题”视图中双击错误,将打开生成的 Java 源文件。
您甚至可以在其中修正问题,但是不应该这样做,因为其中所做的任何更改在下一次探针编译器从探针源中生成文件时将被覆盖。
而是应检验生成的 Java 文件以确定出现错误的段,然后在该段中使用 Probekit 编辑器修正问题。
这样,您就创建了第一个探针。
现在您就可以开始练习 1.3:应用探针。