`
jamaica1982
  • 浏览: 29990 次
  • 性别: 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...

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

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

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

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

    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提供的各种命令行工具来管理...

    命令行关闭,最小化,最大化窗口

    对于“命令行关闭,最小化,最大化窗口”这一主题,我们将深入探讨如何在不同的操作系统环境下,通过命令行来控制窗口的状态。 1. **Windows系统:** 在Windows操作系统中,我们可以使用`cmd.exe`或PowerShell来...

    命令行简单使用OpenStack

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

    Docker了解及命令行使用

    Docker了解及命令行使用

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

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

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

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

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

    ESX通过命令行重启虚拟机

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

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

    PATH扩展命令行使用工具

    标题中的“PATH扩展命令行使用工具”是指一种增强Windows命令行(cmd)功能的应用,它允许用户无需将第三方命令添加到系统环境变量PATH中就能直接执行这些命令。这解决了PATH长度限制的问题,使得管理和使用多个...

Global site tag (gtag.js) - Google Analytics