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程序代码
b) 运行上述代码的main入口函数
c)btrace java脚本代码
第四步: 编译运行需要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
![](http://images.cnitblog.com/blog/376380/201303/20164004-fecba9cd3dc24058a813ce94401f7e5d.jpg)
CaseObject的class文件是放在D:\目录下的,所以加了D:\
下载后解压缩,到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
![](http://images.cnitblog.com/blog/376380/201303/20164004-fecba9cd3dc24058a813ce94401f7e5d.jpg)
CaseObject的class文件是放在D:\目录下的,所以加了D:\
相关文章推荐
- Step-by-Step使用SWT开发GUI
- SQL Server BI Step by Step 2--- 使用SSIS进行简单的数据导入导出
- WPF Step By Step 系列-Prism框架在项目中使用
- 使用Eclipse构建Maven项目 (step-by-step)
- VC++中使用ADO连接数据库step by step
- MDX Step by Step 读书笔记(五) - Working with Expressions (MDX 表达式) - CurrentMember - Properties - Existing 的使用
- [Step By Step]使用SAP Business Objects Data Services将XML数据导入到SAP HANA中(XML XSD Schema)
- 使用Eclipse构建Maven项目 (step-by-step)
- Asp.net MVC4 Step By Step(5)-使用Web API
- 使用Eclipse构建Maven项目 (step-by-step)
- [Step By Step]在SAP Business Objects Data Services中使用Table Comparison Transform表比较功能并导入到SAP HANA中(Table Comparison Transform)
- step by step 使用xml publisher desktop创建客户定制报告
- Step by Step WebMatrix网站开发之二:使用WebMatrix(2)
- Maven_使用maven创建多模块web项目 step by step
- 使用Eclipse构建Maven项目 (step-by-step)
- 20120908-串口编程-MSComm使用2-接收Step by Step
- MDX Step by Step 读书笔记(四) - Working with Sets (使用集合) - 我对Exists 函数的理解
- 使用Eclipse构建Maven项目 (step-by-step)
- Caffe使用step by step:使用自己数据对已经训练好的模型进行finetuning
- Caffe使用step by step:使用自己数据对已经训练好的模型进行finetuning