下载主页:kenai.com/projects/btrace/downloads/directory/releases/release-1.2.4
Windows版本: kenai.com/projects/btrace/downloads/download/releases/release-1.2.4/btrace-bin.zip
Linux版本: kenai.com/projects/btrace/downloads/download/releases/release-1.2.4/btrace-bin.tar.gz
三、安装及使用指导
1)windows 安装指导
- 建立存放btrace的目录,如d:/btrace
- 将btrace-bin.zip内容解压到此目录
- 在d:/btrace目录下,新建btrace_script目录,用于存放监控脚本(其实监控脚本放在哪里都是可以的)
- mkdir btrace
- 将btrace-bin.tar.gz上传到此目录
- tar -xvf btrace-bin.tar.gz
- cd bin
- chmod 755 *
- 在btrace目录下,mkdir trace_script,用于存放监控脚本
3)运行指导
1.Windows
i.打开命令行窗口,切换至bin目录,执行:btrace.bat pid ../btrace_script/TraceTest.java (其中pid为要监控的java进程的ID,可以通过jps命令查看正在运行的所有java进程的ID)
ii.退出时按Contrl+c,再按1
2.Linux
i.在bin目录下,执行:./btrace pid ../trace_script/TraceTest.java (其中pid为要监控的java进程的ID,可以通过jps命令查看正在运行的所有java进程的ID)
ii.退出时按Contrl+c,再按1
注:运行命令还可以补充其他的参数,[-I <include-path>] [-p <port>] [-cp <classpath>],详见btrace压缩包中docs/usersguide.html,其中-p参数用于指定btrace监听的端口,默认为2020,如果被其他程序占用了,则必须使用此参数指定其他的可用端口
4)编写监控脚本指导
新建一个普通的java工程,将btrace-bin.zip/build下3个jar包加入编译路径中,然后就可以进行监控脚本开发了。(所谓的监控脚本,也是普通的java程序,只是编译和执行方式不同于普通程序)
四、针对典型场景的监控脚本
五、常用函数说明
1. 判断类型 instanceof
2. 打印当前线程调用栈 BtraceUtils.Threads.jstack()
3. 打印所有线程栈 BtraceUtils.Threads.jstackAll()
4. 连接字符串 BtraceUtils.Strings.strcat
5. 打印BtraceUtils.print/println
6. 获取当前时间BtraceUtils.timestamp("yyyyMMddHHmmss)
7. 整形转字符串 Strings.str()
8. 获取当前线程名 Threads.name(Threads.currentThread())
9. 获取java运行环境系统属性 Sys.Env.property 等同于System.getProperty
10. 获取对象类名 Reflective.name(Reflective.classOf(obj)
11. 取对象属性值
方式1:
函数参数中直接引用参数类
Field field = Reflective.field("cn.jerry.User","name");
print(Reflective.get(field,user);
方式2:
函数参数中不指定具体参数,使用AnyType[] args,在函数体内使用如下方式获取:
Field field = Reflective.field("cn.jerry.User","name");
print(Reflective.get(field,args[0]);
参考资料:
BTrace简介:http://blog.csdn.net/mgoann/article/details/7268508