使用btrace对正在运行的java程序进行动态监控

1.btrace介绍

btrace是一款针对Java程序的dynamic trace工具。

2.下载

wget https://github.com/btraceio/btrace/releases/download/v1.3.11.3/btrace-bin-1.3.11.3.zip

3.解压之后的简单使用

btrace/bin/btrace PID trace_script

注:PID是Java程序的进程号,trace_script是用来trace的脚本

示例脚本中的内容如下所示:

import com.sun.btrace.annotations.*;
import static com.sun.btrace.BTraceUtils.*;

/**
 *  * This script traces method entry into every method of 
 *   * every class in javax.swing package! Think before using 
 *    * this script -- this will slow down your app significantly!!
 *     */
@BTrace public class AllMethods {
    @OnMethod(
        clazz="/.*/",
        method="/.*/"
    )
    public static void m(@ProbeClassName String probeClass, @ProbeMethodName String probeMethod) {
        print(Strings.strcat("entered ", probeClass));
        println(Strings.strcat(".", probeMethod));
    }
}

注:该脚本可以打印Java应用程序中所有类中方法被调用的情况

4.问题:上述命令中需要指明正在运行的Java应用程序的进程号,需要在Java应用程序启动以后,并且获取进程号,才能开始监控,在Java应用程序启动的过程中,也会发生函数调用(其中可能蕴藏着有用的信息),是否可以在Java应用程序启动时,就对其进行监控?

答案:可以。

本例中的Java应用程序以Jar包的形式发布。

使用到的命令如下所示:

java -javaagent:btrace-agent.jar=script=AllMethods.class,scriptOutputFile=app.log -jar app.jar

其中,trace script原本是java程序,使用下述命令进行编译,编译之后得到AllMethods.class

btrace/bin/btracec AllMethods.java

动态追踪的结果在app.log中,Java应用程序在app.jar中

示例demo程序的链接:demo.rar

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值