java btrace asm_BTrace使用中遇到的问题

本文介绍了一个使用 BTrace 进行代码跟踪的例子,并记录了在执行过程中遇到的错误及可能的解决方案。通过分析 BTrace 脚本,展示了如何在特定的方法调用时打印变量值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import com.sun.btrace.BTraceUtils;

import static com.sun.btrace.BTraceUtils.*;

import com.sun.btrace.annotations.*;

import javax.servlet.http.HttpServletResponse;

//import org.geowebcache.layer.TileLayer;

@BTrace(unsafe=true)

public class Cache{

@OnMethod(clazz="org.geowebcache.arcgis.layer.ArcGISCacheLayer"

,method = "setExpirationHeader",

location=@Location(Kind.RETURN)

)

public static void setExpirationHeader(HttpServletResponse response, int zoomLevel){

println(zoomLevel);

println(response.getHeader("Cache-Control"));

//jstack();

//jstackAll();

}

@OnMethod(clazz="/org.geowebcache.layer\\..*/",method="getExpireClients",location=@Location(Kind.RETURN))

public static void getExpireClients(@Return int zoomLevel){

println("expire:"+zoomLevel);

}

@OnMethod(clazz="org.geowebcache.arcgis.layer.ArcGISCacheLayer" ,method="getTilePath" ,location=@Location(Kind.RETURN))

public static void getTilePath(@Return String path){

println(path);

}

}

遇到的问题:编译完用class文件执行报错,没有解决

./btrace 13801 Cache.classException in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4202

at com.sun.btrace.org.objectweb.asm.Cla***eader.readClass(Unknown Source)

at com.sun.btrace.org.objectweb.asm.Cla***eader.accept(Unknown Source)

at com.sun.btrace.org.objectweb.asm.Cla***eader.accept(Unknown Source)

at com.sun.btrace.client.Client.getDTraceSource(Client.java:579)

at com.sun.btrace.client.Client.submitDTrace(Client.java:554)

at com.sun.btrace.client.Client.submit(Client.java:366)

at com.sun.btrace.client.Main.main(Main.java:206)

Exception in thread "Thread-0" java.lang.IllegalStateException

at com.sun.btrace.client.Client.send(Client.java:502)

at com.sun.btrace.client.Client.sendExit(Client.java:436)

at com.sun.btrace.client.Main$2.run(Main.java:239)

at java.lang.Thread.run(Thread.java:748)

不编译加载多余的classpath报错,没有解决

Connection reset by peer

不编译加载正常的java文件可以运行

./btrace -v  -cp .:/data/gisserver/geoserver/lib/javax.servlet-api-3.1.0.jar 29733  Cache.java

开启非安全模式

编辑btrace脚本,在java启动命令中增加下面的参数

-Dcom.sun.btrace.unsafe=true

在java脚本中增加@BTrace(unsafe=true)

注解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值