第一步: 下载 地址
下载后解压缩,服务器空间,到D盘 D:\btrace目录下
第二步: path里面配置btrace
将D:\btrace\bin加到环境变量的path中
如果没有java_home还要配置JAVA_HOME
第三步: 测试代码示例
a) 需要trace的java程序代码
package com.ddc.mem;public class CaseObject{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;;}}
b) 运行上述代码的main入口函数
package com.ddc.mem;import java.util.Random;public class CaseObjectMain {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脚本代码
com.sun.btrace.annotations.*;import static com.sun.btrace.BTraceUtils.*;@BTracepublic class TracingScript { @OnMethod(clazz=”com.ddc.mem.CaseObject”,method=”execute”,location=@Location(Kind.RETURN) )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:\
,香港空间,美国空间怎么能研究出炸药呢?爱迪生不经历上千次的来自失败,怎么能发明电灯呢