您的位置:首页 > 其它

btrace使用step by step

2013-03-20 16:15 369 查看
第一步: 下载 地址

下载后解压缩,到D盘 D:\btrace目录下

第二步: path里面配置btrace

将D:\btrace\bin加到环境变量的path中

如果没有java_home还要配置JAVA_HOME

第三步: 测试代码示例

    a) 需要trace的java程序代码

package com.ddc.mem;

public class CaseObject{

private static int sleepTotalTime=0;

public boolean execute(int sleepTime) throws Exception{
System.out.println("sleep: "+sleepTime);
sleepTotalTime+=sleepTime;
Thread.sleep(sleepTime);
if(sleepTime%2==0)
return true;
else
return false;
}

}


    b) 运行上述代码的main入口函数

package com.ddc.mem;

import java.util.Random;

public class CaseObjectMain {

public static void main(String[] args) throws Exception{
Random random=new Random();
CaseObject object=new CaseObject();
while(true){
boolean result=object.execute(random.nextInt(1000));
Thread.sleep(1000);
}
}
}


    c)btrace java脚本代码

/* BTrace Script Template */
import com.sun.btrace.annotations.*;
import static com.sun.btrace.BTraceUtils.*;

@BTrace
public class TracingScript {
/* put your code here */
/*指明要查看的方法,类*/
@OnMethod(
clazz="com.ddc.mem.CaseObject",
method="execute",
location=@Location(Kind.RETURN)
)
/*主要两个参数是对象自己的引用 和 返回值,其它参数都是方法调用时传入的参数*/
public static void traceExecute(@Self com.ddc.mem.CaseObject object,int sleepTime, @Return boolean result){
println("调用堆栈!!");
println(strcat("返回结果是:",str(result)));
jstack();
println(strcat("时间是:",str(sleepTime)));
}

}


第四步: 编译运行需要trace的java代码

javac -d D:\ CaseObject.java

javac -d D:\ CaseObjectMain.java

java com.ddc.mem.CaseObjectMain

第五步: 跟踪CaseObject方法的执行情况

jps 得到java运行的pid

btrace -cp btrace/build;D:/ pid TracingScript.java



CaseObject的class文件是放在D:\目录下的,所以加了D:\
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: