• Btrace


    转载自 http://learnworld.iteye.com/blog/1402763

    相关博客

    1. btrace扩展 https://github.com/xxzmxx/btrace_extend
    2. http://www.cnblogs.com/zengkefu/p/5632145.html
    3. userGuide: http://kenai.com/projects/btrace/pages/UserGuide
    4. JAVA doc: http://btrace.kenai.com/javadoc/1.2/index.html
    5. BTrace用户手册<译>,http://macrochen.iteye.com/blog/838920
    6. btrace使用简介,http://rdc.taobao.com/team/jm/archives/509
    7. btrace记忆,http://agapple.iteye.com/blog/962119
    8. btrace一些你不知道的事(源码入手),http://agapple.iteye.com/blog/1005918
    9. 系列文章 http://blog.csdn.net/mgoann/article/details/7268508
    10. http://www.360doc.com/content/15/0311/21/1073512_454418717.shtml
    11. 江南白衣 http://calvin1978.blogcn.com/articles/btrace1.html

    1背景

    在生产环境中可能经常遇到各种问题,定位问题需要获取程序运行时的数据信息,如方法参数、返回值、全局变量、堆栈信息等。为了获取这些数据信息,我们可以通过改写代码,增加日志信息的打印,再发布到生产环境。通过这种方式,一方面将增大定位问题的成本和周期,对于紧急问题无法做到及时响应;另一方面重新部署后环境可能已被破坏,很难重新问题的场景。

    2 BTrace功能

    BTrace天生就为解决这类问题而来,它可以动态地跟踪java运行程序。通过hotswap技术,动态将跟踪字节码注入到运行类中,对运行代码侵入较小,对性能上的影响可以忽略不计。
    BTrace在使用上有很多限制条件,如不能创建对象、数组、抛出和捕获异常、循环等,具体限制条件参考用户文档中的BTrace Restrictions。用户文档地址: http://kenai.com/projects/btrace/pages/UserGuide。
    根据官方声明,不当地使用btrace可能导致jvm崩溃,如BTrace使用错误的.class文件,Hotspot JVM自身存在的hotswap bug等。可以先在本地验证BTrace脚本的正确性,再传到生产环境中定位问题。

    3 安装步骤

    1. 下载安装压缩包,最新版本的是1.2.1,下载地址: http://kenai.com/projects/btrace/downloads/directory/releases。
    2. 解压缩,命令脚本放在bin目录中。
    3. 设置脚本环境变量。
    4. 增加脚本可执行权限。

    4 使用方法

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

    1. btrace

    1. 功能: 用于运行BTrace跟踪程序。
    2. 命令格式:
      btrace [-I ] [-p ] [-cp ] []
    3. 示例:
      btrace -cp build/ 1200 AllCalls1.java
    4. 参数含义:
    • include-path指定头文件的路径,用于脚本预处理功能,可选;
    • port指定BTrace - - agent的服务端监听端口号,用来监听clients,默认为2020,可选;
    • classpath用来指定类加载路径,默认为当前路径,可选;
    • pid表示进程号,可通过jps命令获取;
    • btrace-script即为BTrace脚本;btrace脚本如果以.java结尾,会先编译再提交执行。可使用btracec命令对脚本进行预编译。
    • args是BTrace脚本可选参数,在脚本中可通过"$"和"$length"获取参数信息。
    1. 命令行使用有顺序要求
      cd /d D:developTooltrace-binin
      btrace -cp D:developTooltrace-binuild 2948 C:UserssiangDesktopTracingScript.java

    2 btracec

    功能: 用于预编译BTrace脚本,用于在编译时期验证脚本正确性。
    btracec [-I ] [-cp ] [-d ] <one-or-more-BTrace-.java-files>
    参数意义同btrace命令一致,directory表示编译结果输出目录。

    3 btracer

    1. 功能: btracer命令同时启动应用程序和BTrace脚本,即在应用程序启动过程中使用BTrace脚本。而btrace命令针对已运行程序执行BTrace脚本。
    2. 命令格式:
      btracer <pre-compiled-btrace.class>
    3. 参数说明:
    • pre-compiled-btrace.class表示经过btracec编译后的BTrace脚本。
    • application-main-class表示应用程序代码;
    • application-args表示应用程序参数。
    1. 该命令的等价写法为:
      java -javaagent:btrace-agent.jar=script=[,]*

    4 jvisualvm插件

    image

  • 相关阅读:
    读《暗时间》
    文献笔记8
    文献笔记4
    文献笔记2
    文献笔记5
    文献笔记6
    文献笔记1
    文献笔记3
    读《暗时间》2
    文献笔记7
  • 原文地址:https://www.cnblogs.com/clds/p/6009584.html
Copyright © 2020-2023  润新知