`
wwyolandachang
  • 浏览: 3141 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

btrace功能列表

阅读更多

Btrace是一个jvm probe工具,可以灵活地声明刺探点并注入刺探逻辑。它自带的samples中有非常多的例子,本文列举了从这些例子中总结出来的刺探点声明。

 

构造函数刺探,重载的构造函数也可以

 

@BTrace public class OnThrow {    
    // store current exception in a thread local
    // variable (@TLS annotation). Note that we can't
    // store it in a global variable!
    @TLS static Throwable currentException;

    // introduce probe into every constructor of java.lang.Throwable
    // class and store "this" in the thread local variable.
    @OnMethod(
        clazz="java.lang.Throwable",
        method="<init>"
    )
    public static void onthrow(@Self Throwable self) {
        currentException = self;
    }

    @OnMethod(
        clazz="java.lang.Throwable",
        method="<init>"
    )
    public static void onthrow(@Self Throwable self, String s) {
        currentException = self;
    }

    @OnMethod(
        clazz="java.lang.Throwable",
        method="<init>"
    )
    public static void onthrow(@Self Throwable self, String s, Throwable cause) {
        currentException = self;
    }

    @OnMethod(
        clazz="java.lang.Throwable",
        method="<init>"
    )
    public static void onthrow(@Self Throwable self, Throwable cause) {
        currentException = self;
    }

    // when any constructor of java.lang.Throwable returns
    // print the currentException's stack trace.
    @OnMethod(
        clazz="java.lang.Throwable",
        method="<init>",
        location=@Location(Kind.RETURN)
    )
    public static void onthrowreturn() {
        if (currentException != null) {
            Threads.jstack(currentException);
            println("=====================");
            currentException = null;
        }
    }
}
 

 

刺探一个类的所有子类

@BTrace public class Classload {
   @OnMethod(
     clazz="+java.lang.ClassLoader", 
     method="defineClass",
     location=@Location(Kind.RETURN)
   )   
   public static void defineclass(@Return Class cl) {
       println(Strings.strcat("loaded ", Reflective.name(cl)));
       Threads.jstack();
       println("==========================");
   }
}

另一个例子,

@BTrace
public class SubtypeTracer {
    @OnMethod(
        clazz="+java.lang.Runnable",
        method="run"
    )
    public static void onRun(@ProbeClassName String pcn, @ProbeMethodName String pmn) {
        // on every Runnable.run() method entry print class.method
        print(pcn);
        print('.');
        println(pmn);
    }
}

 

 

 

使用正则表达式刺探多个方法

 

@BTrace public class AllMethods {
    @OnMethod(
        clazz="/javax\\.swing\\..*/",
        method="/.*/"
    )
    public static void m(@ProbeClassName String probeClass, @ProbeMethodName String probeMethod) {
        print(Strings.strcat("entered ", probeClass));
        println(Strings.strcat(".", probeMethod));
    }
} 
 

刺探获得锁之后以及释放锁之前

 

@BTrace public class AllSync {
    @OnMethod(
        clazz="/javax\\.swing\\..*/",
        method="/.*/",
        location=@Location(value=Kind.SYNC_ENTRY, where=Where.AFTER) 
    )
    public static void onSyncEntry(Object obj) {
        println(Strings.strcat("after synchronized entry: ", identityStr(obj)));
    }

    @OnMethod(
        clazz="/javax\\.swing\\..*/",
        method="/.*/",
        location=@Location(Kind.SYNC_EXIT) 
    )
    public static void onSyncExit(Object obj) {
        println(Strings.strcat("before synchronized exit: ", identityStr(obj)));
    }
} 
 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    btrace扩展功能工具

    1.btrace扩展是在btrace已由功能上进行的扩展,原有功能和使用方式依然没变。目前版本扩展了两个功能:接口时间监控和接口时间调用树监控。扩展之后的btrace功能使用时都不需要写btrace脚本。 2.使用接口时间监控...

    一个用于演示btrace功能的demo程序

    这是一个用于演示btrace功能的demo程序, 其中TestJar4是源码,使用maven作为项目管理工具 TestJar4-0.0.1-SNAPSHOT.jar为maven构建之后的jar包 AllMethod.java是trace script

    btrace release-1.2.5.1

    6. samples:这是示例代码或脚本的集合,帮助用户了解如何在实际应用中使用BTrace,通过这些示例可以学习到BTrace的各种用法和功能。 7. docs:这个目录下通常包含BTrace的用户手册、API文档和其他技术文档,是学习...

    jdk1.8-Btrace.rar

    【压缩包子文件的文件名称列表】: jdk1.8-Btrace,这表明压缩包内可能包含了Btrace与Java 1.8版本的兼容性文件。通常,这样的包会包含Btrace的二进制文件、文档、示例脚本以及可能的配置文件,方便用户在Java 1.8...

    jvisualvm btrace插件离线安装

    重新打开后,你应该能在插件列表中看到BTrace插件。点击“工具”菜单,如果看到BTrace的相关选项,说明插件已经成功安装。 7. **使用BTrace**:现在你可以使用BTrace进行性能调优了。选择你的目标Java进程,点击...

    btrace1.3.9

    BTrace利用Java的JVMTI(Java Virtual Machine Tool Interface)和Serviceability Agent(SA)来提供安全、低侵入性的生产环境中的代码探查功能。 【描述】"btrace1.3.9最新版本转过来"意味着这个压缩包包含了...

    Btrace资源

    Btrace利用了Java的 JVMTI (Java Virtual Machine Tool Interface) 技术,JVMTI允许外部工具如Btrace与Java虚拟机交互,提供诸如挂起线程、修改类、获取堆信息等功能。Btrace通过分析和修改类文件,实现在运行时动态...

    Btrace 官方zip包

    ### 二、Btrace 的主要功能 1. **类方法统计**:Btrace 可以帮助开发者追踪并统计应用程序中各个类方法的调用次数、执行时间等信息,这对于优化性能、定位热点代码至关重要。 2. **无侵略性监控**:由于Btrace 不...

    btrace1.3.9.zip

    开发人员可以使用这个库来编写自定义的BTrace脚本,以实现特定的监控功能。 2. **btrace-agent-1.3.9.jar**:BTrace代理是实现动态代码插桩的关键组件。它会在应用程序启动时加载,并根据客户端提供的BTrace脚本,...

    btrace workbench

    BTrace Workbench则是BTrace的集成环境,它扩展了jvisualvm的功能,让开发者能够更方便地创建、调试和应用BTrace脚本。 【描述】"btrace workbench 插件jar包打包下载,jvisualvm的插件" 指出,这个资源是一个可以...

    btrace安装包

    BTrace是一款强大的Java诊断工具,专用于实时、安全地进行生产环境中的应用程序性能监控和故障排查。它的核心特性在于能够在不中断程序运行的情况下,动态插入代码进行跟踪和分析,这对于理解复杂的系统行为和定位...

    BTrace-一个用于Java平台的安全动态的跟踪工具

    标题中的"BTrace"是一个专为Java平台设计的安全、动态的跟踪工具,它的主要功能是对正在运行的Java应用程序进行实时监控和诊断。BTrace利用了字节码注入的技术,能够在不修改原有代码的情况下,动态地向目标应用添加...

    bTrace跟踪线程堆栈

    它通过字节码增强技术来实现这一功能,对于理解复杂系统的行为和性能问题特别有用。 描述虽然为空,但我们可以根据标题推测,这篇博文可能讲述了如何使用bTrace来跟踪Java应用程序中的线程堆栈信息。线程堆栈是程序...

    BTrace监控远程服务器使用实例

    **BTrace监控远程服务器使用实例** BTrace 是一个强大的、安全的、动态的Java应用程序诊断工具,它允许开发者在运行时对Java应用进行细粒度的监控和性能分析。BTrace利用了Java的动态代理机制(Java Agent)和ASM...

    btrace-release-1.3.11.3.zip

    5. **可扩展性**:Btrace 支持与其他监控工具集成,例如日志记录框架、告警系统等,可以轻松地扩展其功能。 在 `btrace-release-1.3.11.3` 压缩包中,可能包含以下文件和目录: - `bin/`:包含 Btrace 的可执行...

    btrace-bin-1.3.9.tgz

    8. **构建文件`: `build`目录可能包含构建BTrace的脚本或配置,这对于开发者想要定制或扩展BTrace功能时非常有用。 通过BTrace,开发者能够深入理解程序的运行状态,定位性能瓶颈,诊断并发问题,以及实施细粒度的...

    btrace调试工具

    ### 功能特性 1. **实时性**:BTrace可以在不中断应用程序运行的情况下收集数据,这对于线上环境的性能监控和问题定位尤其有用。 2. **无侵入性**:由于不需要修改源代码,BTrace降低了对原有程序的影响。 3. **...

    btrace_extend-master

    【标题】"btrace_extend-master" 是一个与BTrace工具相关的扩展项目,它提供了一些额外的功能和增强,以便更好地监控和诊断Java应用程序。BTrace是一款强大的动态代码分析工具,允许开发者在运行时对Java应用程序...

    btrace引导文件安装Btrace

    在给定的文件列表中,出现了"org-openjdk-btrace-visualvm.nbm",这是一个VisualVM插件。VisualVM是JDK自带的一个多合一的性能分析工具,它能提供内存、线程、CPU使用情况等多种信息。Btrace的VisualVM插件使我们...

    btrace支持jdk1.6上运行的版本

    4. **可扩展性**:BTrace 脚本可以根据需求进行定制,提供高度灵活的监控和分析功能。 5. **易用性**:BTrace 提供了一个简单的命令行界面和直观的脚本语法,使得开发者能够快速上手。 **三、BTrace 的使用步骤** ...

Global site tag (gtag.js) - Google Analytics