Btrace是一个基于Java且可以实现对字节码的动态跟踪的工具,它能在不改动当前程序的情况下,运行时的去监控Java程序的执行状况,例如可以做到内存状况的监控、方法调用的监控等等。但是它只能够运行于JDK6+以上的版本,因为某些原因,如在JDK5中JTWTI(Java Virtual Machine Toolkit Interface:Java 虚拟机工具接口,可以参看这篇文章: http://www.ibm.com/developerworks/cn/java/j-lo-jvmti/),只支持基于本地库(Native library)的代理,而不支持于基于某个jar的代理。

它的使用非常简单,最简单的就是将写好的java源码,直接放到它的bin目录去执行就可以了,它有详细的UserGuide:http://kenai.com/projects/btrace/pages/UserGuide,也可以参看一些别人写的实例,如:http://rdc.taobao.com/team/jm/archives/509

但是在某些情况下,我们的运行环境中没有JDK,只是JRE,我们就需要对Btrace进行一些修改才可以正常使用了。


   1. 从JDK中将tools.jar拷贝到一个合适的目录 (如. /tmp);
   2. 从JDK中将libattach.so也拷贝到上面的目录中(Ex. /tmp) - 这个文件,要根据当前运行系统的操作系统位数进行选择,如32位或64位,我们就需要从合适的JDK中进行选择文件;
   3. 修改Btrace的脚本,脚本是在bin目录下面,根据不同的系统修改不同的btrace文件 - 将TOOLS_JAR="${JAVA_HOME}/lib/tools.jar"修改为指向上面拷贝的tools.jar;
   4. 修改Btrace的脚本,脚本是在bin目录下面,根据不同的系统修改不同的btrace文件 - 修改java执行的那一行 (i.e. 就是以 $JAVA_HOME}/bin/java 开头的行) ,在其中加入参数-Djava.library.path=/tmp,/tmp目录就是我们上面存放libattach.so文件地方;
   5. 照原来的执行方式执行即可。

以上是翻译于:https://kenai.com/projects/btrace/forums/tips-tricks/topics/13119-Using-BTrace-with-JRE-as-a-target-VM

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐