转载请注明原链接地址 http://www.cnblogs.com/dongxiao-yang/p/6134393.html btrace 是一个可以不用重启线上java业务查问题的神器,记一下自己折腾半天写的几个...脚本 /* BTrace Script Template */ import com.sun.btrace.annotations.*; import static com.sun.btrace.BTraceUtils...; import com.sun.btrace.BTraceUtils; import com.sun.btrace.Profiler; import com.sun.btrace.annotations.../bin/btrace /Users/dongxiaoyang/Desktop/ 参考资料 1 用BTrace排查性能问题 2 Btrace入门到熟练小工完全指南...3 使用jvisualvm.exe 的Btrace插件介绍/使用教程 4 BTrace User's Guide
btrace拦截一个url参数。...import com.sun.btrace.AnyType; import com.sun.btrace.BTraceUtils; import com.sun.btrace.annotations.*...; import com.sun.btrace.BTraceUtils; import com.sun.btrace.annotations.*; @BTrace public class PrintArgsSimple...下面构造一个btrace脚本,拦截进程中的异常。...package mooc.birdsky.java.performance.btrace; import com.sun.btrace.BTraceUtils; import com.sun.btrace.annotations
BTrace action methods in the same BTrace class....将btrace上传到服务器上,并设置环境变量,将btrace等命令加入命令行PATH中: 首先,在目标服务器(server)上执行(使用nc命令): $ mkdir -p ~/zhouwei/btrace-bin...-1.3.9 ; cd ~/zhouwei/btrace-bin-1.3.9 ; nc -l 8080 > btrace-bin-1.3.9.tgz ; tar zxvf btrace-bin-1.3.9...=$BTRACE_HOME/bin:$PATH ; cd ~/zhouwei ; ll ; which btrace 如果服务器上已经有btrace包,则只需要执行上面后半部分的命令来设置环境变量即可:...,则使用btrace -p 2021 ...来指定其它端口。 Linux下已经有个命令也叫btrace,注意别用混了。
BTrace工作原理 BTrace是基于动态字节码修改技术(Hotswap)来实现运行时java程序的跟踪和替换。...BTrace工作序列图 Java Compile API BTrace使用Compile API把用户编写的源码文件编译成字节码文件 在 JDK 6 中,类库通过 javax.tools 包提供了程序运行时调用编译器的...关键逻辑 BTrace的入口类在https://github.com/btraceio/btrace/blob/master/src/share/classes/com/sun/btrace/client...在其main方法中,可以看到起最终的核心逻辑是在https://github.com/btraceio/btrace/blob/master/src/share/classes/com/sun/btrace...系列 BTrace常用场景示例 参考 动态追踪技术漫谈 Instrumentation 新功能 BTrace 原理浅析 Java Attach API 编译器 API Java ASM介绍
在https://github.com/btraceio/btrace中下载btrace-v2.2.3-bin.tar.gz,下载成功后进行解压,配置btrace的环境变量,配置成功后在控制它输入来验证配置环境的准确...btrace --version BTrace v.2.2.3 (71df581ff6c89afa41ef611b987fc87c17ee8537) 环境搭建成功后,运行Btrace主要有两种方式,分别是...然后编写BTrace的脚本,通过BTrace的脚本达到监控执行的是那个类那个方法以及API执行中它的参数信息。...import org.openjdk.btrace.core.BTraceUtils; import org.openjdk.btrace.core.annotations.*; import org.openjdk.btrace.core.types.AnyType...执行BTrace命令行的模式是首先获取被运行程序的PID信息,然后执行BTrace的脚本,具体过程如下所示。
Btrace拦截行号 被拦截对象(Btrace只能在本地运行) ?...拦截行号的btrace脚本 import com.sun.btrace.AnyType; import com.sun.btrace.BTraceUtils; import com.sun.btrace.annotations...:"+line); BTraceUtils.println("pcn"+pcn); BTraceUtils.println("pmn"+pmn); } } 运行btrace...脚本 btrac 311 /Users/wangsen/java/performance/src/main/java/mooc/birdsky/java/performance/btrace/PrintArgsSimple.java...mooc.birdsky.java.performance.Controller.BtraceController pmn:hello line:12 line=-1,拦截全部行 curl http://localhost:8080/btrace
BTrace是一个开源项目,开始于2007年,名声鹊起得益于2008年的JavaOne会议。 ...BTrace可以帮助我们做到这一点,通过写一个短和直接的Java代码: import com.sun.btrace.annotations.*; import com.sun.btrace.BTraceUtils...每个BTrace脚本由探头Probes (切入点方面pointcuts)和Actions操作(advice)组成。...在目标JVM是一个动态插入BTrace的代理。 BTrace客户端(无论是BTrace命令行或Visual VM的 BTrace插件)将命令发送到代理,并得到响应。...BTrace代理测量类被加载到目标JVM并重新加载已加载的类。
BTrace在这种背景环境下应运而生了。...根据官方声明,不当地使用BTrace可能导致JVM崩溃,如BTrace使用错误的.class文件,所以,可以先在本地验证BTrace脚本的正确性再使用。...4.安装BTrace 1)下载地址:https://github.com/btraceio/btrace/releases/tag/v1.3.8.3-1 2)解压缩 3)设置环境变量 BTRACE_HOME...=/Users/wlxs/btrace-bin-1.3.8.3 export BTRACE_HOME export PATH=$PATH:$BTRACE_HOME/bin 5.使用btrace 作用:运行...8.注解说明 1)类注解 @com.sun.btrace.annotations.BTrace指定该java类为一个btrace脚本文件。
源码下载:https://gitee.com/hong99/spring.git (springboot_btrace) btrace是什么?...https://github.com/btraceio/btrace.git (gradle) 使用文档:https://github.com/btraceio/btrace/wiki#btrace https...btrace可以用来做代码日志跟进,以及方法执行过程中分析; btrace可以用来监控接口性能变慢,分析各个方法的耗时; btrace可以用来分析gc及调用栈信息; btrace可以用来分析异常信息;...btrace可以用来收集系统相关信息; .... btrace的使用 下载btrace的运行包: https://github.com/btraceio/btrace/releases 配置环境...$PATH:$JAVA_HOME/bin" #关键的配置 btrace环境 BTRACE_HOME=/Users/csh/Desktop/tools/btrace export BTRACE_HOME
BTrace是线上不重启服务的情况下定位问题的神器,本文介绍了最常用的几种场景 定位慢调用 查看com.tim.BtraceCase#count耗时很长时的上下文:入参、成员变量等信息 @BTrace...其中关键是location = @Location(value = Kind.ERROR) @BTrace public class Debug { @OnMethod(...BtraceCase.java:22) com.tim.BtraceCase.main(BtraceCase.java:10) ---- 输出统计信息 http://github.com/btraceio/btrace.../blob/master/samples/Histogram.java BTrace系列 BTrace实现原理 参考 Btrace入门到熟练小工完全指南 动态追踪技术漫谈 后端技术杂谈 btrace一些你不知道的事
BTrace是什么 BTrace 是一个开源项目。旨在为 java 提供安全可靠的动态跟踪分析工具。...BTrace安装 下载链接:https://github.com/btraceio/btrace/releases , 目前最新版本为2.2.2 配置BTRACE_HOME环境变量 Path添加%BTRACE_HOME...%\bin cmd命令行输入btrace --version,出现以下界面表示成功 BTrace 注解 BTrace 注解指定应该将工具放置在何处,以及应该向追踪操作提供哪些数据。...语法:btrace [-p ] [-cp ] [] 「port」是 BTrace 代理监听的端口,可选参数。...classpath 是 BTrace 在编译期间搜索类的目录和 jar文件的集合。默认为“.” 「pid」是被追踪的 Java 程序的进程ID 「btrace-script」是btrace脚本程序。
btrace的github地址: https://github.com/btraceio/btrace 安装btrace: 到github上下载btrace的压缩包,我这里下载的是1.3.11版本...配置好btrace后,我们有两种方式可以运行BTrace脚本: 一是在JVisualVM中添加BTrace插件,添加classpath 二是直接使用命令行运行:btrace < pid >...:install-file -Dfile=E:\BTrace\btrace-bin-1.3.11\build\btrace-boot.jar -DgroupId=com.sun.btrace -DartifactId....monitor_tuning.btrace; import com.sun.btrace.AnyType; import com.sun.btrace.BTraceUtils; import com.sun.btrace.annotations.BTrace...在btrace包下新建一个BTrace脚本,代码如下: package org.zero01.monitor_tuning.btrace; import com.sun.btrace.AnyType;
BTrace 是什么 BTrace 是检查和解决线上的问题的杀器,BTrace 可以通过编写脚本的方式,获取程序执行过程中的一切信息,并且,注意了,不用重启服务,是的,不用重启服务。...第二步,解压 btrace-bin-1.3.9.tgz 到一个目录即可,例如 /home/fengzheng/soft/btrace , 到这一步其实就可以用了,只是执行脚本的时候需要在 btrace.../soft/btrace export PATH=$PATH:$BTRACE_HOME/bin 之后执行命令 source /etc/profile ,使环境变量立即生效。...简单测试用例 btrace 最简单的语法是 btrace $pid script.java,所以需要知道要探测的 Java程序的进程id,然后编写一个探测脚本即可。 1....编写 btrace 脚本,脚本内容简单如下: package kite; import com.sun.btrace.annotations.*; import static com.sun.btrace.BTraceUtils.Strings.strcat
随着 sun 公司被并入 Oracle 之后,BTrace 现状: 开源代码库 https://github.com/btraceio/btrace 命名规范 org.openjdk.btrace JDK...# btrace export BTRACE_HOME="/Users/chenxinjie/Dev/btrace-2.0.1-bin" export PATH=$PATH:$BTRACE_HOME/bin...936 3052 cn.live.Application Memory.java import org.openjdk.btrace.core.annotations.BTrace; import org.openjdk.btrace.core.annotations.OnTimer...-Dfile=/Users/chenxinjie/Dev/btrace-2.0.1-bin/libs/btrace-client.jar -DgroupId=org.openjdk.btrace -DartifactId.../btrace-2.0.1-bin/libs/btrace-boot.jar -DgroupId=org.openjdk.btrace -DartifactId=btrace-boot -Dversion
(一)Btrace的介绍 BTrace是Java的安全可靠的动态跟踪工具。...(二)Btrace的一些限制 由于Btrace会把脚本逻辑直接侵入到运行的代码中,所以在使用上做很多限制: 1、不能创建对象 2、不能使用数组 3、不能抛出或捕获异常 4、不能使用循环 5、不能使用synchronized...(四)Btrace的安装 (1)从github上下载最新的二进制包 ,版本是1.3.10.2 wget https://github.com/btraceio/btrace/releases/download.../v1.3.10.2/btrace-bin-1.3.10.2.tgz (2)解压到指定路径 (3)设置环境变量 (4)验证安装是否成功 (5)查看btrace的帮助文档 (五)Btrace使用的一个例子...(1)在使用btrace之前,我们先需要写一个简单的java程序,模拟成是线上正在跑的程序 代码比较简单,就是每隔随机的时间,随机生成两个整数,进行求和: (2)主程序已经有了,下面就需要我们写btrace
答案是有,它就是Java中的神器-BTrace BTrace是什么?...BTrace使用Java的Attach技术,可以让我们无缝的将我们BTrace脚本挂到JVM上,通过脚本你可以获取到任何你想拿到的数据,在侵入性和安全性都非常可靠,特别是定位线上问题的神器。...BTrace原理 BTrace是基于动态字节码修改技术(Hotswap)向目标程序的字节码注入追踪代码。 安装配置 关于BTrace的安装配置使用,此处就不再重复造轮子,网上有太多的教程。...脚本需要使用注解为 @BTrace(unsafe=true),需要修改BTrace安装目录下bin中btrace脚本将 -Dcom.sun.btrace.unsafe=false改为 -Dcom.sun.btrace.unsafe...*/ import com.sun.btrace.BTraceUtils; import com.sun.btrace.annotations.*; import static com.sun.btrace.BTraceUtils
BTrace 是什么?...BTrace 快速开始 下载最新的 BTrace releases 版本:https://github.com/btraceio/btrace/releases 解压文件夹,在 <BTRACE_HOME...btrace BTRACE_HOME/bin/btrace PID btrace 将通过 JVM Attach API 连接到 的 java 应用程序,然后把脚本绑定到应用进程...的语法,私以为平常遇到什么样的业务场景,边学边用就是了,以下是官方的一些 BTrace 资料: BTrace Github Wiki BTrace User's Guide 由于 BTrace 的安全和性能考虑...推荐阅读: Btrace入门到熟练小工完全指南 如何在生产环境使用Btrace进行调试 BTrace使用小结
BTrace 的使用方式是用户自己编写符合 BTrace使用语法的脚本,并结合btrace命令,来获取应用的一切调用信息,就像下面这样: /bin/btrace <trace_script...加持》一文中的 Spring Boot工程 ---- BTrace 安装部署 下载 二进制文件并解压 这里我解压到目录:/home/btrace 配置系统环境变量 vim /etc/profile...BTRACE_HOME=/home/btrace export BTRACE_HOME export PATH=$PATH:$BTRACE_HOME/bin 验证 BTrace安装情况 btrace -...-version ---- 编译 BTrace源码 克隆源码 git clone git@github.com:btraceio/btrace.git 编译源码 ....我们在此工程里再添加一个 scripts包,用于放置 btrace 脚本文件: 由于 btrace脚本中需要用到 btrace相关的组件和函数库,因此我们还需要在工程的 pom.xml中引入 btrace
,利用Btrace来监控Java程序的运行 二、安装与执行(Windows) 在windows环境下,可以直接利用jdk自带的jvisualvm工具来 安装Btrace插件,具体操作如下: 1...3、如果想监控程序执行时间,复制如下代码到Btrace窗体内: package my.app.btrace; import static com.sun.btrace.BTraceUtils.*; import...btrace 4552 DEMO.java >> /data/btrace/DEMO.txt 四、补充 如果想监控程序的参数什么的,换成以下代码即可: ackage my.app.btrace;...; import com.sun.btrace.annotations.BTrace; import com.sun.btrace.annotations.Kind; import com.sun.btrace.annotations.Location...com.sun.btrace.annotations.ProbeMethodName; import com.sun.btrace.annotations.Return; import com.sun.btrace.annotations.Self
答案当然是肯定的,下面我们就来看一下神器 BTrace!...BTrace 在提供解决方案之前,我们先看下什么是 BTrace,BTrace 是sun公司推出的一款 Java 动态、安全追踪(监控)工具,可以在不用重启JVM 的情况下监控系统运行情况,方便的获取程序运行时的数据信息...wget https://github.com/btraceio/btrace/releases/download/v2.2.0/btrace-v2.2.0-bin.tar.gz tar xzvf btrace-v2.2.0...简单说下上面的这段代码中我们使用到的几个注解,@BTrace ,OnMethod,@Location 代表的含义: @BTrace:表示这个类是一个 BTrace 程序,BTrace 编译器会强制查找该注解...,BTrace 代理也会检查这个是否有该注解。
领取专属 10元无门槛券
手把手带您无忧上云