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

btrace使用

    博客分类:
  • JAVA
 
阅读更多

btrace是很好跟踪线上环境出现异常且棘手的问题,但是在配置环境变量之后,按照前辈们所说不需要编译,

直接btrace  jps  脚本文件就可以,但是我下载current版本之后,但是我在执行过程中,却并未打印出来(有时候可以)

但是我采用编译后的class,是可以的,这个都无妨。那就简单展示效果吧!package com.tonghuashun.btrace.course01.chenyang;

public class KPIApp {

	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception {
		int i = 1;
		while (true) {
			Thread.sleep(2000);
			CalcKPI kpi = new CalcKPI();
			i++;
			kpi.calc(i + "%");
		}

	}

}

 package com.tonghuashun.btrace.course01.chenyang;

public class CalcKPI {
	public String calc(String kpi) throws Exception {
		System.out.println("KPI :" + kpi);
		return "KPI :" + kpi;
	}
}

 package com.tonghuashun.btrace.course01.chenyang;

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

/**
 * This script demonstrates the possibility to intercept method calls that are
 * about to be executed from the body of a certain method. This is achieved by
 * using the {@linkplain Kind#CALL} location value.
 */
// 在CalcKPI累中调用任何的方法体内,所执行的方法
@BTrace
public class AllCalls1 {
	@OnMethod(clazz = "com.tonghuashun.btrace.course01.chenyang.CalcKPI", method = "/.*/", location = @Location(value = Kind.CALL, clazz = "/.*/", method = "/.*/"))
	public static void m(@Self Object self, @TargetMethodOrField String method,
			@ProbeMethodName String probeMethod) { // all calls to the methods
													// with signature "()"
		println(Strings.strcat(method, Strings.strcat(" in ", probeMethod)));
	}
}package com.tonghuashun.btrace.course01;
import static com.sun.btrace.BTraceUtils.println;
import static com.sun.btrace.BTraceUtils.str;
import static com.sun.btrace.BTraceUtils.strcat;

import com.sun.btrace.annotations.BTrace;
import com.sun.btrace.annotations.Kind;
import com.sun.btrace.annotations.Location;
import com.sun.btrace.annotations.OnMethod;
import com.sun.btrace.annotations.OnTimer;
import com.sun.btrace.annotations.ProbeClassName;
import com.sun.btrace.annotations.Return;
import com.sun.btrace.annotations.Self;

@BTrace
public class TraceMethodArgsAndReturn {

	@OnMethod(

	clazz = "com.tonghuashun.btrace.course01.CaseObject",

	method = "execute",

	location = @Location(Kind.RETURN)

	)
	public static void traceExecute(@Self CaseObject instance, int sleepTime,
			@Return String result, @ProbeClassName String className) {

		println("call CaseObject.execute");

		println(strcat("sleepTime is:", str(sleepTime)));

		println(strcat("return value is:", str(result)));
		println(strcat("CLASSNAME  is:", str(className)));
		// BTraceUtils.print("return value is:" + result);
		//
		// println(strcat("sleepTotalTime is:",
		// str(get(field("CaseObject", "sleepTotalTime"), instance))));
		//
		// println(strcat("return value is:", str(result)));

	}

	@OnTimer(value = 4000)
	public static void print() {

	}

}
 
分享到:
评论

相关推荐

    Btrace 官方zip包

    3. **运行Btrace**:使用`btrace`命令启动Btrace,并指定要监控的Java进程ID以及脚本文件。 4. **查看结果**:Btrace 将在控制台输出监控数据,也可以选择将结果输出到文件或通过网络发送到其他工具进行进一步分析...

    Java软件生产监控工具Btrace使用方法详解

    Java软件生产监控工具Btrace使用方法详解 Btrace是Sun公司推出的Java动态、安全追踪(监控)工具,可以在不需要重启的情况下监控系统运行情况,方便地获取程序运行时的数据信息,如方法参数、返回值、全局变量和...

    如何检测线上代码的运行情况---BTrace使用分享

    在实际使用中,我们需要将BTrace工具部署到JVM上,通过指定应用的JAR或类路径来启动BTrace。执行BTrace命令时,需要提供监控脚本(如MorganTraceTest.java)和目标应用程序的PID。一旦BTrace运行起来,它就会开始...

    btrace1.3.9

    2. **脚本编写**:BTrace使用一种简单的脚本语言,基于Groovy,开发者可以编写脚本来定义想要追踪的行为。例如,可以追踪方法调用、记录日志、计算性能指标等。 3. **安全机制**:BTrace有内置的安全策略,以防止不...

    BTrace自我总结测试代码

    BTrace 使用Java Agent技术,通过字节码注入来跟踪和收集应用中的各种信息,如方法调用、对象创建等。在这个自我学习测试代码中,我们主要关注了如何监控`List`对象参数和自定义对象的参数。 1. **BTrace 的基本...

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

    BTrace 使用 Java Agent 技术,它可以在不改变原有代码的情况下,利用 JVMTI(Java Virtual Machine Tool Interface)接口向运行中的 JVM 注入字节码。BTrace 提供了一种声明式的脚本语言,用户可以编写简单的脚本来...

    btrace-release-1.3.11.3.zip

    4. **安全性**:由于 Btrace 使用 Java 代理机制,只有具备权限的用户才能启用监控,增加了系统的安全性。 5. **可扩展性**:Btrace 支持与其他监控工具集成,例如日志记录框架、告警系统等,可以轻松地扩展其功能。...

    btrace源代码

    2. **BTrace Scripts**:BTrace使用一种简单的脚本语言,让开发者能够编写诊断脚本。这些脚本定义了要在目标应用中执行的操作,如记录方法调用、计时器、内存使用情况等。BTrace脚本语言具有丰富的内置函数和变量,...

    btrace调试工具

    ### BTrace使用步骤 1. **安装与配置**:下载BTrace并将其添加到系统路径,确保JDK也在系统路径中。 2. **编写BScript**:使用BTrace特有的BScript语言编写探查脚本,定义需要追踪的行为和数据。 3. **创建Java ...

    btrace_extend-master

    2. **安全性**:BTrace使用JDK的动态代理机制,确保只在安全的点插入探查代码,避免引发运行时错误或性能下降。 3. **实时性能分析**:通过BTrace,你可以实时查看方法调用的时间、对象创建频率、内存分配情况等,...

    BTrace实现原理

    BTrace使用这个API获取`Instrumentation`实例,进而利用ASM生成的字节码对目标类进行改造。例如,BTrace可以通过`retransformClasses`方法在运行时对已经加载的类进行重新转换,添加监控代码。 4. **Java Compiler ...

    java程序运行跟踪利器Btrace分享

    1. **编写脚本**:Btrace使用一种基于Groovy的脚本语言,你可以通过学习官方提供的samples来快速上手。这些脚本通常包含探查点(probe),在特定的代码行或方法执行时被触发。 2. **查找Java进程**:使用`jps`命令...

    Btrace 学习1

    BCEL (Byte Code Engineering Library) 是一个用于处理 Java 字节码的库,BTrace 在注入探针时可能使用了 BCEL 来生成和操作字节码。BCEL 提供了工具来解析、创建、修改和打印 Java 类文件。 7. **使用场景**: -...

    btrace java线上debug神器

    - **自定义脚本**:BTrace使用一种基于Java的脚本语言,允许开发者编写简单的脚本来定义想要追踪的行为,例如记录特定方法的执行时间、参数和返回值。 - **安全无侵入**:BTrace遵循最小权限原则,仅对指定的方法...

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

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

    BTrace@javaone

    - **注解**:BTrace使用了一组特定的注解来标识和配置TraceClass及其成员。这些注解位于`com.sun.btrace.annotations`包中。 - `@BTrace`:标记一个类为BTrace类。 - `@OnMethod`:定义一个方法级别的探针。 - `@...

    性能工具之Java调试工具BTrace入门(csdn)————程序.pdf

    由于BTrace使用的是字节码级别的修改,因此它能够在运行时实现对Java应用程序的监控,而无需重启服务。 **安装配置和注意事项** 安装BTrace通常只需下载官方仓库(https://github.com/btraceio/btrace)提供的版本...

    jvisualvm btrace插件离线安装

    7. **使用BTrace**:现在你可以使用BTrace进行性能调优了。选择你的目标Java进程,点击“BTrace”选项,编写或导入BTrace脚本,然后应用到进程中。BTrace脚本可以让你在运行时动态地添加代码,以观察类的方法调用、...

    btrace支持jdk1.7 linux下使用

    【标题】:“btrace支持jdk1.7 linux下使用” 【描述】:“btrace支持jdk1.7 linux下使用 非常好用哦 呵呵呵呵” 【知识点详解】 BTrace(全称:Bytecode Tracing for Java)是一款强大的动态追踪工具,专为Java...

Global site tag (gtag.js) - Google Analytics