`
mgoann
  • 浏览: 253137 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

BTrace工具实例应用

    博客分类:
  • Java
 
阅读更多

BTrace工具使用简介

Hello World”

案例描述

使用test方法接收一个int类型参数,根据参数放入map中两个字符串。

现代码中没有打印出任何的日志,导致产生的int值无法确定,以及执行路径无法确定,这个时候可以使用BTrace来跟踪、分析程序路径。

 

import java.util.HashMap; import java.util.Map; import java.util.Random; public class TestHello { public static void main(String[] args) throws InterruptedException { Thread.sleep(2000 * 10); TestHello th = new TestHello(); Random random = new Random(47); th.test(random.nextInt(9) + 1); } private Map<String, String> model = new HashMap<String, String>(); public boolean test(int age) { String variable1 = "默认提示信息:你输入的参数是:" + age; String variable2 = "欢迎观临网上乐园"; model.put("variable1", variable1); model.put("variable2", variable2); if (age >= 1 && age <= 5) { variable1 = "你的输入参数介于1和5之间"; variable2 = "欢迎小朋友玩益智类游戏"; model.put("variable1", variable1); model.put("variable2", variable2); return true; } else if (age > 5 && age <= 10) { variable1 = "你的输入参数介于5和10之间"; variable2 = "欢迎小朋友进入英语游乐场"; model.put("variable1", variable1); model.put("variable2", variable2); return false; } else { return true; } } }


 

 

BTrace脚本:

 

import com.sun.btrace.annotations.*; import static com.sun.btrace.BTraceUtils.*; import java.util.HashMap; @BTrace public class BTraceField { @OnMethod(clazz="java.util.HashMap", method="put") public static void m(@Self HashMap map, Object Key, Object value) { // all calls to the methods with signature "()" println("===================="); print(Key); print(":"); println(value); } @OnMethod(clazz="TestHello", method="test") public static void d(@Self Object obj, int age){ print("test method is called, input age="); println(age); } }


 

首先运行TestHello

使用jps查找TestHelloPID,输入btrace <pid> BTraceField.java

 

输出:

test method is called, input age=3

====================

variable1:默认提示信息:你输入的参数是:3

====================

variable2:欢迎观临网上乐园

====================

variable1:你的输入参数介于15之间

====================

variable2:欢迎小朋友玩益智类游戏

 

其他相关博文

BTrace工具简介http://mgoann.iteye.com/blog/1409667
BTrace实例应用
http://mgoann.iteye.com/blog/1409676
BTrace实际案例分析
http://mgoann.iteye.com/blog/1409685

 

0
1
分享到:
评论

相关推荐

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

    BTrace 是一个强大的、安全的、动态的Java应用程序诊断工具,它允许开发者在运行时对Java应用进行细粒度的监控和性能分析。BTrace利用了Java的动态代理机制(Java Agent)和ASM字节码库,能够在不中断程序运行的情况...

    btrace1.3.9

    【标题】"btrace1.3.9"指的是BTrace工具的一个特定版本,1.3.9,这是一款强大的Java应用程序动态跟踪工具。BTrace利用Java的JVMTI(Java Virtual Machine Tool Interface)和Serviceability Agent(SA)来提供安全、...

    BTrace实现原理

    BTrace,一个强大的Java诊断工具,其主要功能是在线无侵入地对生产环境中的Java应用程序进行动态跟踪和性能分析。它的实现原理主要依赖于四个核心组件:Java Agent、ASM、Java Instrument API以及Java Compiler API...

    BTrace二三事之二:OnMethod子类匹配BUG(怀疑)

    在IT行业中,BTrace是一个非常实用的工具,它主要用于Java应用程序的动态跟踪和诊断。本文将深入探讨“BTrace二三事之二:OnMethod子类匹配BUG(怀疑)”这一主题,结合源码分析和实际工具应用,揭示可能存在的问题...

    java在线问题排查利器之Btrace&Greys1

    - 下载并解压Btrace工具。 - 编写监控脚本(如UrsInterfaceCalls.java),明确指定要监控的类和方法。 - 设置JDK和Btrace的环境变量,确保脚本可以正确运行。 - 获取Tomcat进程号,以便于连接和监控。 - 启动...

    Btrace非侵入式调试Java程序神奇linux版

    综上所述,Btrace是一个强大的工具,它允许开发者在不中断Java应用程序运行的情况下进行实时调试,通过其提供的丰富的API和脚本语言,可以实现各种定制化的监控和分析任务。对于处理大型复杂系统,特别是生产环境中...

    Java在线问题诊断工具.pdf

    Java在线问题诊断工具是一种用于监控和诊断Java应用程序运行时问题的工具,它可以动态地追踪正在运行的Java程序,而对运行中的代码侵入性小,对性能的影响可以忽略不计。这类工具通常利用Java代码和JavaSE的新特性...

    Java工程师应用技术汇总

    - **btrace**:动态追踪工具,无需重新编译或重启应用即可进行调试。 - **crash**:命令行工具,用于分析核心转储文件。 - **TProfiler**:阿里巴巴开源的性能分析工具,用于JVM应用的性能监控。 - **HouseMD**:...

    Java内存管理问题案例分享_技术大学.pdf

    btrace是一个动态跟踪工具,它可以在不停机的情况下执行跟踪。google-perf-tools提供了Tcmalloc内存分配库,可以提高内存分配的效率。 在内存问题案例部分,文中提到了几个典型的案例,比如OOM(OutOfMemoryError)...

    javaagent使用指南-rickiyang1

    例如,BTrace 和 Arthas 就是利用 Javaagent 来实现动态跟踪和诊断的工具。 总之,Javaagent 提供了一种在运行时修改 Java 应用程序行为的能力,通过 `premain` 方法和 `Instrumentation` 接口,开发者可以实现诸如...

    底层篇.pdf

    此外,还有btrace和TProfiler等高级诊断工具,以及Arthas等动态诊断框架。 Java内存模型规定了线程间的数据可见性和原子性,遵循happens-before原则,以保证程序的正确执行。synchronized和volatile关键字用于实现...

Global site tag (gtag.js) - Google Analytics