`
jamaica1982
  • 浏览: 29756 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

通过命令行使用InsECTJ

 
阅读更多
最近在重新修改和配置之前的一个项目,其中用到了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

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


       



分享到:
评论
3 楼 jamaica1982 2012-06-19  
samlin425 写道
你好,你在使用InsectJ有没有具体的例子可以参考的?
那个《InsectJ的使用》的文档损坏了,无法打开。

另外我在写一个很简单的例子,但是每次用insectJ run都会出现我写的class not found的错误,这是怎么回事?

麻烦帮忙解答下,谢谢!


不好意思,前段时间太忙,没有上JavaEye,能具体说说是什么问题吗?
2 楼 samlin425 2012-05-29  
你好,你在使用InsectJ有没有具体的例子可以参考的?
那个《InsectJ的使用》的文档损坏了,无法打开。

另外我在写一个很简单的例子,但是每次用insectJ run都会出现我写的class not found的错误,这是怎么回事?

麻烦帮忙解答下,谢谢!
1 楼 jamaica1982 2011-10-09  
需要补充一点的是,如果用Ant来执行,则-javaagent参数是使用java task里面的<jvmarg>而不是<arg>

相关推荐

    CMD命令行使用CMD命令行使用CMD命令行使用CMD命令行使用CMD命令行使用CMD命令行使用CMD命令行使用CMD命令行使用

    CMD命令行使用CMD命令行使用CMD命令行使用CMD命令行使用CMD命令行使用CMD命令行使用CMD命令行使用CMD命令行使用CMD命令行使用CMD命令行使用CMD命令行使用CMD命令行使用CMD命令行使用CMD命令行使用CMD命令行使用CMD...

    LSI RAID命令行使用工具storcli .pdf

    文档的标签“LSI RAID LSI StorCli 命令行管理RAID”则进一步强调了文档的重点内容,即如何通过命令行使用storcli工具来管理LSI RAID。 文档内容上,它首先介绍了如何获取storcli工具,提供了适用于不同操作系统的...

    Python 图片转字符画之通过命令行指定图片大小和名称 Python源码

    Python 图片转字符画之通过命令行指定图片大小和名称 Python源码Python 图片转字符画之通过命令行指定图片大小和名称 Python源码Python 图片转字符画之通过命令行指定图片大小和名称 Python源码Python 图片转字符画...

    使用命令行编译器使用命令行编译器

    使用命令行编译器使用命令行编译器使用命令行编译器使用命令行编译器使用命令行编译器使用命令行编译器使用命令行编译器使用命令行编译器使用命令行编译器使用命令行编译器使用命令行编译器使用命令行编译器使用...

    Git命令行使用方法;

    Git命令行使用方法;Git命令行使用方法;Git命令行使用方法;Git命令行使用方法;

    Firefly命令行使用

    Firefly命令行使用

    Windows Server中通过命令行创建用户和组

    首先,我们要明白为什么要通过命令行而非图形用户界面(GUI)创建用户和组。在某些情况下,例如远程管理服务器或在ServerCore环境中,命令行提供了更为灵活和强大的管理手段。另外,在脚本或批量操作中,命令行能...

    Linux 命令行使用技巧思维导图

    shell 是一个命令行解释器,用户可以通过 shell 与操作系统进行交互。shell 的主要功能是读取用户的输入命令,解释命令,并将结果显示给用户。常见的 shell 有 bash、zsh、fish 等。 三、shell 行提示符的意思 ...

    Windows下的命令行使用的zip命令

    Windows下的命令行使用的zip命令,用法与linux用法一致。 后端程序打包文件调用。 如果你装了windows版的Oracle,那你可以在Oracle\product\11.2.0\dbhome_1\BIN目录下找到该zip命令。

    Python-goLinux命令行使用谷歌搜索的Python工具

    标题中的“Python-goLinux命令行使用谷歌搜索的Python工具”指的是一个使用Python编程语言开发的命令行工具,该工具能够实现在Linux操作系统环境下通过谷歌搜索引擎进行搜索。这个工具可能为用户提供了在终端中方便...

    详解介绍命令行窗口使用

    命令行窗口使用详解 命令行窗口是计算机操作系统的基本组件之一,它提供了用户与计算机之间的交互界面,用户可以通过命令行窗口输入命令来执行各种操作。命令行窗口的使用是计算机操作的基础知识,本文将详细介绍...

    vCenter6.7命令行手册

    管理员还可以通过创建和使用会话文件、环境变量和配置文件来简化命令行操作,以提高效率。 总的来说,vCenter6.7命令行手册是一本非常实用的指南,它向管理员展示了如何使用VMware提供的各种命令行工具来管理...

    命令行简单使用OpenStack

    综上所述,通过命令行简单使用OpenStack文档,主要介绍了如何使用OpenStack的命令行工具进行虚拟机的开通、安全组管理、弹性云硬盘的操作、快照管理、网络创建和镜像制作等操作。这些操作都是在云计算管理中经常需要...

    Docker了解及命令行使用

    Docker了解及命令行使用

    思科路由命令以及远程通过命令行方式配置路由的方法

    思科路由器的各种配置命令 远程通过命令行方式配置路由

    通过命令行自动打包生成单webview应用

    通过命令行自动打包生成单webview应用。 基本原理先建好一个基本的android单webview应用的项目,就是那种一打开就显示webivew的简单项目,将这个项目作为模板项目。然后在这个项目的build.gradle中定义一个task,这...

    ESX通过命令行重启虚拟机.docx

    ESX通过命令行重启虚拟机

    操作系统实验,进程控制mytime

    “mytime”命令通过命令行参数接受要运行的程序,创建一个独立的进程来运行该程序,并记录程序运行的时间。 在Linux下实现: • 使用fork()/execv()来创建进程运行程序 • 使用wait()等待新创建的进程结束 • ...

    eSDK BigData V100R005C10 Loader命令行使用指南 01

    在使用Loader命令行工具章节,文档会详细讲解如何通过命令行界面执行导入和导出任务,包括创建作业、配置参数、提交作业以及监控作业状态等操作。这通常涉及到对Hadoop集群的配置理解,对数据源的熟悉,以及对Loader...

Global site tag (gtag.js) - Google Analytics