通过命令行使用InsECTJ

最近在重新修改和配置之前的一个项目,其中用到了InsECTJ,其主页如下:
[url]http://insectj.sourceforge.net/[/url]

当然,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的用户手册或者网上的一篇简单的介绍:
[url]http://dl.iteye.com/topics/download/7c04089b-0be5-3c29-8545-75cb18f50e38[/url]

第四步,写命令行,运行。
在准备好了所需要的jar包、配置文件和probe之后,就是写出命令行来调用InsECTJ了。
一个简单的例子如下:
java -javaagent:runtime.jar=insectj_config.xml -cp .;probes.jar;classes/ Test1.InsectJTest1

(由于是边试边写的,好像有些虎头蛇尾...,回头有什么可以补充的,我再写到评论里面吧 :P )
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值