天天看点

Btrace下载,配置,应用

生产环境中可能出现各种问题,但是这些问题又不是程序error导致的,可能是逻辑性错误,这时候需要获取程序运行时的数据信息,如方法参数、返回值来定位问题,通过传统的增加日志记录的方式非常繁琐,而且需要重启server,代价很大。BTrace应运而生,可以动态地跟踪java运行程序,将跟踪字节码注入到运行类中,对运行代码侵入较小,对性能上的影响可以忽略不计。

1.下载btrace,解压到对应的使用路径,

BTrace主要包含btracec和btrace两个命令编译和启动BTrace脚本:

a. btrace

功能: 用于运行BTrace跟踪程序。

命令格式:

btrace [-I <include-path>] [-p <port>] [-cp <classpath>] <pid> <btrace-script> [<args>]

示例:

btrace -cp build/  1200 AllCalls1.java

参数含义:

include-path指定头文件的路径,用于脚本预处理功能,可选;

port指定BTrace agent的服务端监听端口号,用来监听clients,默认为2020,可选;

classpath用来指定类加载路径,默认为当前路径,可选;

pid表示进程号,可通过jps命令获取;

btrace-script即为BTrace脚本;btrace脚本如果以.java结尾,会先编译再提交执行。可使用btracec命令对脚本进行预编译。

args是BTrace脚本可选参数,在脚本中可通过"$"和"$length"获取参数信息。

b. btracec

功能: 用于预编译BTrace脚本,用于在编译时期验证脚本正确性。

btracec [-I <include-path>] [-cp <classpath>] [-d <directory>] <one-or-more-BTrace-.java-files>

参数意义同btrace命令一致,directory表示编译结果输出目录。

c. btracer

功能: btracer命令同时启动应用程序和BTrace脚本,即在应用程序启动过程中使用BTrace脚本。而btrace命令针对已运行程序执行BTrace脚本。

命令格式:

btracer <pre-compiled-btrace.class> <application-main-class> <application-args>

2.配置/etc/profile,设置对应的相对路径,注btrace依赖jdk路劲,在profile中应该把java_home export出来。

    之后使profile生效,source  /etc/profile

Btrace下载,配置,应用

   输入btrace之后出现以下表示正常:

Btrace下载,配置,应用

3.关于Btrace的应用,就不多写了,给个好的链接:http://blog.csdn.net/w_intercool/article/details/7208110

但被测方法参数设置一定要Btrace脚本中的参数一一对应,否则Btrace会把相同方法名不同参数的方法视作  重载方法

Btrace下载,配置,应用