偶尔看到BTrace,必须记录一下
利用hotSpot虚拟机可以动态替换class的特点而完成的,可以对online的程序动态的改变类的行为(一般为加些打印日志),进而进行线上调试的一个工具。
使用方式:
1.jmap -histo:live [pid] 检查那个类实例特别多
2.定位代码
如果是HashTable的问题,那么就要定位出什么代码引起的
接下来自然要看看是什么代码往HashTable里疯狂的put数据,于是用神器btrace跟踪Hashtable.put调用的堆栈。
首先写btrace脚本TracingHashTable.java:
import com.sun.btrace.annotations.*;
import static com.sun.btrace.BTraceUtils.*;
@BTrace
public class TracingHashTable {
/*指明要查看的方法,类*/
@OnMethod(
clazz="java.util.Hashtable",
method="put",
location=@Location(Kind.RETURN))
public static void traceExecute(@Self java.util.Hashtable object){
println("调用堆栈!!");
jstack();
}
}
3.安装
下载wget http://kenai.com/projects/btrace/downloads/download/releases/release-1.2.2/btrace-bin.zip
解压,chmod 777 btrace
4.bin/btrace -cp build [pid] TracingHashTable.java
就可以看到方法的调用栈
分享到:
相关推荐
【BTrace测试】 BTrace是Sun Microsystems开发的一款强大的动态跟踪工具,它允许开发者在不修改生产代码的情况下,对Java应用程序进行诊断和性能监控。BTrace的全称是"Berkeley Trace",它基于字节码注入技术,可以...
**BTrace 自我总结测试代码** BTrace 是一个强大的、安全的、动态的Java应用程序诊断工具,由Sun Microsystems(现已被Oracle收购)开发。它允许开发者在运行时对应用程序进行探查,而无需修改源代码或重启服务。...
4. 功能测试:在生产环境中验证某些功能是否正常工作。 **注意事项** 1. 使用Btrace需要对Java和Java虚拟机有一定的了解。 2. 虽然Btrace可以无侵入地跟踪应用程序,但过度使用可能会对性能产生影响,因此应在生产...
3. **实时反馈**:Btrace 可以实时展示监控结果,使得开发者能够迅速发现问题,无需等待长时间的性能测试或日志分析。 4. **自定义脚本**:Btrace 支持基于Groovy的脚本语言,用户可以根据需要编写自己的监控逻辑,...
在生产环境中使用时,需要确保脚本经过充分测试并符合安全规范。 4. **运行BTrace**:通过命令行工具`btrace`运行BTrace脚本,指定要附加到的目标Java进程ID。脚本会自动注入到目标进程中,并开始执行。 5. **应用...
- 在不影响业务的前提下,最好在测试环境中先行验证BTrace脚本。 总结,BTrace作为一款强大的Java在线调试工具,通过字节码增强技术实现了对运行中的Java应用的实时监控,对于开发人员而言,是进行性能优化和问题...
5. **易于集成**:由于BTrace是命令行工具,因此可以轻松地集成到自动化测试、持续集成流程或其他系统监控工具中。 在"btrace_extend-master"项目中,可能包含以下内容: - **BTrace脚本**:这些是用BTrace语言...
因此,建议在生产环境中谨慎使用,并对脚本进行充分的测试。 ### 4. BTrace与其他工具的对比 - **相比JMX**:JMX主要提供管理和监控功能,而BTrace更侧重于动态代码插入,更适合做深入的运行时行为分析。 - **与...
4. 创建测试用例,包括父类和子类,明确指出期望的行为,然后通过修改BTrace脚本或源码来验证问题。 对于这类问题,有时候可能需要提交issue到BTrace的官方仓库或者社区论坛,寻求其他开发者或BTrace维护者的帮助。...
例如,Btrace工具就是基于Instrumentation和ASM的,理解了这两者的原理,就更容易掌握Btrace。 Robotium还提供了数据驱动测试框架,它允许使用参数化的测试用例来执行测试,这有助于在不同的数据集上重复使用测试...
个人开发的BTrace小工具。不需要再配置BTRACEHOME环境变量,可多人互不影响同时测试。使用方式,请参见:https://blog.csdn.net/jl19861101/article/details/88368830
标题《JVM Anatomy Park》指的是一个持续更新的迷你系列文章,这些文章主要探讨Java虚拟机(JVM)的细节,每个话题、测试、基准测试和观察都仅用5-10分钟阅读时间。这个系列由Aleksey Shipilёv撰写,他是Red Hat ...
个人开发的BTrace小工具。不需要再配置BTRACEHOME环境变量,可多人互不影响同时测试。使用方式,请参见:https://blog.csdn.net/jl19861101/article/details/88368830
综上所述,使用Robotium和Ant构建脚本进行Android自动化测试时,需要注意测试代码的编译和安装过程,以确保每次测试都能反映最新的代码变更。此外,理解Instrumentation的基本原理有助于更好地设计和优化测试框架。...
- Vmock-Agent:字节码增强工具,类似JVM-Sandbox和Btrace,实现无侵入、跨进程的功能。 - Vmock 控制台:提供可视化脚本和数据配置。 - VTP:自动化测试分布式调度平台,用于执行、结果计算和报告生成。 - ...
- 工具:tcpcopy, btrace, nginx post action等。 - 场景:适用于系统支持重复写入且对写请求响应进行了特殊处理的情况。 - 注意事项:确保写请求不违反唯一性约束。 3. **请求引流** - 工具:Apache mod_jk, ...
Ethereal 可以读取从 tcpdump(libpcap)、网络通用嗅探器(被压缩和未被压缩)、SnifferTM 专业版、NetXrayTM、Sun snoop 和 atmsnoop、Shomiti/Finisar 测试员、AIX 的 iptrace、Microsoft 的网络监控器、Novell...
性能分析模块PROFILER是设计用来对系统性能进行动态监测的,它使用BTrace工具进行数据抓取。这一模块确保了系统性能的优化,提供了持续改进的依据。 数据库模块的核心是Hbase数据库,其设计支持可伸缩、面向内存、...