BTrace小试 - 动态日志跟踪

bTrace跟踪线程堆栈 NULL 博文链接:https://junefsh.iteye.com/blog/1770800 立即下载

BTrace动态日志跟踪笔记

BTrace是一个安全的JVM动态追踪工具,最初为原Sun公司Kenai项目下面的一个子项目。
BTrace是一个很“有趣”的VisualVM插件,本身也是可以独立运行的程序。它的作用是在不停止目标程序运行的前提下,通过HotSpot虚拟机的HotSwap技术动态加入原本并不存在的调试代码。

这项功能对实际生产中的程序很有意义:经常遇到程序出现问题,但排查错误的一些必要信息,譬如方法参数、返回值等,在开发时并没有打印到日志之中,以至于不得不停掉服务,通过调试增量来加入日志代码以解决问题。当遇到生产环境服务无法随便停止时,缺一两句日志导致排错进行不下去是一件非常郁闷的事情。

在VisualVM中安装了BTrace插件后,在应用程序面板中右键点击要调试的程序,会出现"Trace Application……"菜单,点击将进入BTrace面板。这个面板里面看起来就像一个简单的Java程序开发环境,里面还有一小段Java代码如下所示:

/* BTrace Script Template */
import com.sun.btrace.annotations.*;
import static com.sun.btrace.BTraceUtils.*;

@BTrace
public class TracingScript {
	/* put your code here */
}

下面是一段很简单的Java代码来演示BTrace的功能:产生两个1000以内的随机整数,输出这两个数字相加的结果。
BTrace跟踪演示

public class BTraceTest{
 public int add(int a,int b){
     return a+b;
 }
 public static void main(String[]args)throws IOException{
     BTraceTest test=new BTraceTest();
     BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
     for(int i=0;i<10;i++){
         reader.readLine();
         int a=(int)Math.round(Math.random()*1000);
          int b=(int)Math.round(Math.random()*1000);
         System.out.println(test.add(a,b));
     }
 }
}

程序运行后,在VisualVM中打开该程序的监视,在BTrace页签填充TracingScript的内容,输入的调试代码如下所示:
BTrace调试代码

 /*BTrace Script Template*/
 import com.sun.btrace.annotations.*;
 import static com.sun.btrace.BTraceUtils.*;
 
  @BTrace
 public class TracingScript{
     @OnMethod(
        clazz="org.fenixsoft.monitoring.BTraceTest",
         method="add",
         location=@Location(Kind.RETURN)
     )
     public static void func(@Self org.fenixsoft.monitoring.BTraceTest instance,int a,int b,@Return int result){
         println("调用堆栈:");
         jstack();
         println(strcat("方法参数A:",str(a)));
         println(strcat("方法参数B:",str(b)));
         println(strcat("方法结果:",str(result)));
     }
 }

点击"Start"按钮后稍等片刻,编译完成后,可见Output面板中出现"BTrace up&running"的字样。

程序运行的时候在Output面板将会输出如下所示的调试信息。

......

方法参数A:33
方法参数B:700
方法结果:733

BTrace的用法还有许多,打印调用堆栈、参数、返回值只是最基本的应用,在它的网站上有使用BTrace进行性能监视、定位连接泄漏和内存泄漏、解决多线程竞争问题等例子

【STM32项目】老人健康跌倒检测系统实现(附教程PCB资料) 功能概述 跌倒检测 倾倒告警,人体角度倾斜至阈值触发蜂鸣报警 异常运动,加速度超过正常行动阈值时触发报警 心率监测 实时检测心率数据 血氧监测 实时检测采集血氧 血压测量 血压在线测量 红外体温 非接触体温采集方案 接触式体温采集方案 实时定位 中科微GPSGT-U12双频GPS北斗 GLONASS IRNSS定位系统 NEMA数据解析 可扩展高精度定位方案厘米级 屏幕显示 数据采集显示 告警阈值设置 语音提示 1欢迎使用老人智慧监测系统 阅读详情

相关推荐

从零开始了解数据采集(五)——工业通信协议:数据采集的“语言”桥梁

数据采集常用的通信协议有哪一些?看完这篇你就了解了~

李恒的博客 4057

Btrace入门

今天收到客户报的一个Bug,登录系统查看发现没有相关日志输出,方法中相关的请求参数及变量都没有打印出来,给排查问题造成很大不便,我们知道解决Java系统疑难杂症有两大利器,其一是tcpdump用于网络抓包分析 、其二是Btrace用于动态跟踪Java代码,tcpdump在 前面一些文章有介绍它的简单使用(总共4个方法,分别跟踪方法是否被调用,监控方法耗时,打印方法请求参数(可以打印出基本类型参数,也可以打印出业务对象类型参数)、跟踪某一行代码是否被执行。注:上面4个方法基本覆盖了一般跟踪的需求。

程序员青菜学厨记 200

中科蓝讯蓝牙耳机SDK实战:从目录解析到消息处理框架

本文深入解析中科蓝讯蓝牙耳机SDK的目录结构与消息处理框架,提供从硬件驱动到蓝牙功能定制的实战指南。重点剖析SDK核心模块如消息队列机制、按键事件处理及电量报告优化,并分享二次开发中的调试技巧与避坑经验,助力开发者高效完成TWS耳机功能定制。

weixin_30335575的博客 387

BTrace简介及使用

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

~~wind~fly~~ 7072

华大HC32F460 TCP Client 实验

华大HC32F460 TCP Client 实验

ZhuoWuKeJi的博客 647

FastBuilding 3DMAX插件:批量生成配楼,让建筑可视化告别手动重复建模

在建筑可视化与城市规划项目中,配楼群是营造城市氛围和方案完整度的关键,但几十上百栋配楼的建模往往成为工期瓶颈。传统复制粘贴或BOX贴图方式无法兼顾真实感与效率。FastBuilding作为一款3DMAX插件,通过参数化生成逻辑,将配楼制作转化为可调控的流水线:设定层高、面宽、窗户密度等参数,即可在视口内实时生成带完整外立面细节的实体模型;支持点选拉框和样条线批量生成两种模式,配合随机种子可快速产出丰富而不失协调的建筑群。该插件不仅面数控制合理,生成模型仍可继续编辑,尤其适合住宅区鸟瞰、规划投标及远景天际线等

weixin_28520495的博客 249

BTrace使用小结

简介 BTrace是一个安全的JVM动态追踪工具,最初为原Sun公司Kenai项目下面的一个子项目。 典型的使用场景是,“我要查个问题,可那个方法没有打印入口参数和返回结果日志”,“我想看某个方法的执行耗时”,“我想查看某方法如System.GC()的调用栈”等等,这些都是BTrace可以小试牛刀的地方。它的优势是,直接attach应用JVM,不用重启应用进程,可比较快速方便地定位问题。 不错的...

weixin_33919950的博客 305

使用C#和ASP.NET创建登录页面

在Visual Studio中,右键单击项目,选择"添加",然后选择"新建项"。在对话框中选择"Web",然后选择"Web 窗体"。在Visual Studio中,右键单击项目,选择"添加",然后选择"新建项"。在Visual Studio中,选择"新建项目",然后选择"ASP.NET Web应用程序"。在上面的代码中,我们创建了一个简单的用户界面,包含一个用户名输入框、一个密码输入框和一个登录按钮。在上面的代码中,我们创建了一个简单的用户界面,包含一个用户名输入框、一个密码输入框和一个登录按钮。

TzData的博客 763

BTrace动态日志跟踪

BTrace:是一个VisualVM插件,本身也是可以独立运行的程序。作用是:不停止目标程序运行的前提下,通过HotSpot虚拟机的HotSwap技术动态加入原本并不存在的调试代码。 package test; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamRea...

u013068789的博客 285

基于STM32单片机设计的智能坐垫_431

本文设计了一款基于STM32F103C8T6单片机的智能坐垫系统,该系统集成了压力传感器、SHT30温湿度传感器、薄膜加热垫、涡轮风机、语音播报模块、OLED显示屏及HC-05蓝牙模块,实现了对用户就坐状态与坐垫微环境的实时监测与智能调控。系统通过压力传感器检测用户就坐情况,自动启动久坐计时并触发语音提醒;温湿度数据用于控制通风与加热功能,以改善座椅舒适性;用户可通过按键或手机APP设置久坐时长、手动开关通风与加热,并通过OLED屏或APP实时查看环境参数与计时状态。本设计体现了嵌入式系统在健康关怀与舒适性

409

【数据集】中国大气污染物数据集CHAP(1km空间分辨率)-韦晶团队

中国大气污染物数据集CHAP(1km空间分辨率)-韦晶团队

WW、forever的博客 2593

[深入理解Java虚拟机]第四章 虚拟机性能监控与故障处理工具

理论总是作为指导实践的工具,能把这些知识应用到实际工作中才是 我们的最终目的。给一个系统定位问题的时候,知识、经验是关键基础,数据是依据,工具是运用知识处理数据的手段。这里说的数据包括:运行日志、异常堆栈、GC日志、线程快照 ( threaddump/javacore文件)、堆转储快照(heapdump/hprof文件)等。经常使用适当的虚拟机监控和分析的工具可以加快我们分析数据、定位解决问题的速

Code-lover's Learning Notes 5545

C#联合Halcon机器视觉框架源码

本软件参考EV开发,共用模块,基于WPF+Halcon,是非常不错的学习框架,需要什么功能可以自己添加,插件式开发非常方便。

Z's Palace 4823

Java动态跟踪工具(不需要重启服务)——Btrace

btrace 是一个可以不用重启线上java业务查问题的神器,安全可靠的动态跟踪工具。下面说一下btrace在windows和linux环境下的使用。 github地址:https://github.com/jbachorik/btrace 下载之后可以分别在windows和linux下解压。 一、Win7 首先配置环境变量 注意一定要配置变量名BTRACE_HOME,b

keketrtr的专栏 2587

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

bStrace & sTrace[z]

  两种不同的动态分析工具,BTrace主要针对java分析,STrace适合Linux下的应用分析。   ======================================   BTrace:http://hi.baidu.com/whzkinger/blog/item/0f1271277c82760f918f9d04.html   STrace:跟踪程式执行时的系统调用...

liudaoru - 悟 333

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

测试Btrace笔记

测试Btrace笔记 - 编写.java文件 NumberUtil.java javac NumberUtil.java 编译class Number.class java NumberUtil 执行class文件。 - 打开visualVm检测jvm进程 - 根据你当前的Jdk版本选择对应的visualVm,根据的visualvm版本选择正确的插件,在安装btrace有关的...

度窝-笔记 393

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

虚拟机性能监控与故障处理工具--可视化工具

http://blog.youkuaiyun.com/coslay/article/details/48932277 JDK的可视化工具 JDK中除了提供大量的命令行工具外 ,还有两个功能强大的可视化工具:JConsole和VisualVM ,这两个工具是JDK的正式成员,没有被贴上“unsupported and experimental”的标签。 其中JConsole是在

chj97的专栏 1063

JDK的可视化工具——多合一故障处理工具(VisualVM)。

VisualVM(All-in-One Java Troubleshooting Tool)是到目前为止随JDK发布的功能最强大的运行监视和故障处理程序,并且可以遇见在未来一段时间内都是官方主力发展的虚拟机故障处理工具。官方在VisualVM的软件说明中写上了“All-in-One”的描述字样,预示着他除了运行监视、故障处理外,还提供了很多其他方面的功能。如性能分析(Profili...

孤芳不自赏 1022

VisualVM Btrace使用

实现原理参考:http://www.ibm.com/developerworks/cn/java/j-lo-instrumentation/  1.首先使用VisualVM 下载btrace插件并安装完成。 2.在Eclipse中写个测试类如下: package com.lss.test; import java.io.BufferedReader; import java.io.IOExc

kevin_Luan的专栏 6388

BTrace使用总结

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

自由的天空 315

超高逼格Log日志打印

代码地址如下:http://www.demodashi.com/demo/12646.html 前言 Log日志的打印一直是一个比较头疼的事,怎样才能让自己的log显示更多信息,怎样才能让自己的log更好的帮助我们定位问题,帮助调试,一直是我关注的问题。 我将Log打印封装到LogUtil类中,这篇文章涉及以下内容 LogUtil的优势 LogUtil的实现原理 LogUtil的使用 项目结...

weixin_34043301的博客 1255

jvisualvm btrace 实践,在线调试java程序

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34321753的博客 190

BTrace快速入门

概述 btrace是sun的一款java动态诊断工具。可以在运行中的java类中动态的注入trace代码,这样我们就可以在不停机的情况下获取方法的入参,返回值,等信息,从而达到监控调试的目的。但是使用btrace可能导致jvm崩溃,所以才生产环境使用btrace必须要在本地验证脚本的正确性。 配置 安装:去https://github.com/btraceio/btrace下载btra...

Shuai.Zhang 4684

利用btrace在线监控java程序状态

btrace介绍       下载地址:https://kenai.com/projects/btrace/downloads/directory/releases/       选择版本进行下载,这里下载的是release-1.2.4 /btrace-bin.zip       这两天在调试程序时,发现一个比较好用的工具-btrace,能够线上监控程序状态,获取运行时数据信息,如方法返

星空的专栏 1万+

【性能跟踪】btrace学习二--btrace一个简单例子

btrace安装好了,就看一些语法吧。可以到btrace的官方帮助文档中去看,基本上就可以http://kenai.com/projects/btrace/pages/UserGuide下面以一个例子来说明:新建了一个工程,目录结构如下:

西瓜肚圆圆 1万+
上一篇: mysql插入数据后返回自增ID
下一篇: JMX的用处及用法
架构师的清醒
博客等级 码龄14年 291粉丝 397原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值