偶尔看到BTrace,必须记录一下
利用hotSpot虚拟机可以动态替换class的特点而完成的,可以对online的程序动态的改变类的行为(一般为加些打印日志),进而进行线上调试的一个工具。
使用方式:
1.jmap -histo:live [pid] 检查那个类实例特别多
2.定位代码
如果是HashTable的问题,那么就要定位出什么代码引起的
接下来自然要看看是什么代码往HashTable里疯狂的put数据,于是用神器btrace跟踪Hashtable.put调用的堆栈。
首先写btrace脚本TracingHashTable.java:
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
就可以看到方法的调用栈
利用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
就可以看到方法的调用栈
动态替换class与线上调试:BTrace的高效应用
本文介绍如何利用BTrace这一工具,动态替换class并对其进行在线调试,通过具体步骤如jmap检查类实例、定位问题代码、使用btrace跟踪特定方法调用来实现对线上程序的高效维护。
474

被折叠的 条评论
为什么被折叠?



