最近在重新修改和配置之前的一个项目,其中用到了InsECTJ,其主页如下:
http://insectj.sourceforge.net/
当然,Java的profiler很多,在这里一方面是因为历史原因需要使用InsECTJ,另一方面,我觉得InsECTJ的使用确实比较简单。InsECTJ基于Java的agent实现,可以动态进行instrumentation,所以相比于使用Soot, ASM或BCEL直接去instrument要方便一点。
InsECTJ本身是以Eclipse插件的形式发布的,而且在用户手册里面没有介绍如何通过命令行来使用。插件在选择所要profile或instrument的代码以及控制所要使用的monitor方面,确实具备有较好的灵活性。但如果想把InsECTJ集成到一个自动化的流程里面,可能还是需要用命令行或者Ant这种工具来调用InsECTJ。这里想记录一下本人通过命令行使用InsECTJ的一点尝试。
第一步,准备一些库
InsECTJ本身的runtime.jar和probes.jar。这2个jar包可以在安装了InsECTJ的插件之后,在Eclipse的plugin目录的edu.gatech.cc.rtinsect.probes_1.1.8和edu.gatech.cc.rtinsect_1.1.8子目录下找到。另外,InsECTJ还有一个UI的jar,在这里不用到,就不管它了。
第二步,写配置文件
这里需要新建一个insectj_config.xml文件,顾名思义就是InsECTJ的配置文件。该文件主要用于说明用哪个probe来monitor哪些class或method。如下是一个配置文件的例子:
<?xml version="1.0" encoding="ISO-8859-1"?>
<insectconfig>
<settings verbose="false" dump="true" dumpdir="instrumented"/>
<probe class="edu.gatech.cc.rtinsect.inserters.BranchProbeInserter" monitor="monitor.Monitor1" arguments=""/>
<probe class="edu.gatech.cc.rtinsect.inserters.MethodCallProbeInserter" monitor="monitor.Monitor1" arguments=""/>
<probe class="edu.gatech.cc.rtinsect.inserters.UseProbeInserter" monitor="monitor.Monitor1" arguments=""/>
<probe class="edu.gatech.cc.rtinsect.inserters.BasicBlockProbeInserter" monitor="monitor.Monitor1" arguments=""/>
<instrument>Test1.InsectJTest1
Test1.InsectJTest1 add( int)
Test1.InsectJTest1 main( String[])
Test1.InsectJTest1 minus( int)
</instrument>
</insectconfig>
第三步,写自己的probe
这里的probe一般是用户自己写的一个class,用于处理运行时搜集到的数据。具体写法可参见InsECTJ的用户手册或者网上的一篇简单的介绍:
http://dl.iteye.com/topics/download/7c04089b-0be5-3c29-8545-75cb18f50e38
第四步,写命令行,运行。
在准备好了所需要的jar包、配置文件和probe之后,就是写出命令行来调用InsECTJ了。
一个简单的例子如下:
java -javaagent:runtime.jar=insectj_config.xml -cp .;probes.jar;classes/ Test1.InsectJTest1
(由于是边试边写的,好像有些虎头蛇尾...,回头有什么可以补充的,我再写到评论里面吧
)
分享到:
相关推荐
CMD命令行使用CMD命令行使用CMD命令行使用CMD命令行使用CMD命令行使用CMD命令行使用CMD命令行使用CMD命令行使用CMD命令行使用CMD命令行使用CMD命令行使用CMD命令行使用CMD命令行使用CMD命令行使用CMD命令行使用CMD...
Python 图片转字符画之通过命令行指定图片大小和名称 Python源码Python 图片转字符画之通过命令行指定图片大小和名称 Python源码Python 图片转字符画之通过命令行指定图片大小和名称 Python源码Python 图片转字符画...
Git命令行使用方法;Git命令行使用方法;Git命令行使用方法;Git命令行使用方法;
Firefly命令行使用
首先,我们要明白为什么要通过命令行而非图形用户界面(GUI)创建用户和组。在某些情况下,例如远程管理服务器或在ServerCore环境中,命令行提供了更为灵活和强大的管理手段。另外,在脚本或批量操作中,命令行能...
shell 是一个命令行解释器,用户可以通过 shell 与操作系统进行交互。shell 的主要功能是读取用户的输入命令,解释命令,并将结果显示给用户。常见的 shell 有 bash、zsh、fish 等。 三、shell 行提示符的意思 ...
Windows下的命令行使用的zip命令,用法与linux用法一致。 后端程序打包文件调用。 如果你装了windows版的Oracle,那你可以在Oracle\product\11.2.0\dbhome_1\BIN目录下找到该zip命令。
标题中的“Python-goLinux命令行使用谷歌搜索的Python工具”指的是一个使用Python编程语言开发的命令行工具,该工具能够实现在Linux操作系统环境下通过谷歌搜索引擎进行搜索。这个工具可能为用户提供了在终端中方便...
命令行窗口使用详解 命令行窗口是计算机操作系统的基本组件之一,它提供了用户与计算机之间的交互界面,用户可以通过命令行窗口输入命令来执行各种操作。命令行窗口的使用是计算机操作的基础知识,本文将详细介绍...
管理员还可以通过创建和使用会话文件、环境变量和配置文件来简化命令行操作,以提高效率。 总的来说,vCenter6.7命令行手册是一本非常实用的指南,它向管理员展示了如何使用VMware提供的各种命令行工具来管理...
对于“命令行关闭,最小化,最大化窗口”这一主题,我们将深入探讨如何在不同的操作系统环境下,通过命令行来控制窗口的状态。 1. **Windows系统:** 在Windows操作系统中,我们可以使用`cmd.exe`或PowerShell来...
综上所述,通过命令行简单使用OpenStack文档,主要介绍了如何使用OpenStack的命令行工具进行虚拟机的开通、安全组管理、弹性云硬盘的操作、快照管理、网络创建和镜像制作等操作。这些操作都是在云计算管理中经常需要...
Docker了解及命令行使用
思科路由器的各种配置命令 远程通过命令行方式配置路由
通过命令行自动打包生成单webview应用。 基本原理先建好一个基本的android单webview应用的项目,就是那种一打开就显示webivew的简单项目,将这个项目作为模板项目。然后在这个项目的build.gradle中定义一个task,这...
ESX通过命令行重启虚拟机
“mytime”命令通过命令行参数接受要运行的程序,创建一个独立的进程来运行该程序,并记录程序运行的时间。 在Linux下实现: • 使用fork()/execv()来创建进程运行程序 • 使用wait()等待新创建的进程结束 • ...
标题中的“PATH扩展命令行使用工具”是指一种增强Windows命令行(cmd)功能的应用,它允许用户无需将第三方命令添加到系统环境变量PATH中就能直接执行这些命令。这解决了PATH长度限制的问题,使得管理和使用多个...
标题 "使用命令行管理Windows" 涉及到的核心知识点主要集中在通过命令行工具来对Windows操作系统进行管理和维护。在Windows系统中,命令行工具主要包括CMD(命令提示符)和PowerShell,它们提供了非图形化的交互方式...