因此,我向btrace进行自我介绍,但目前我没有得到任何输出。使用此脚本:
包com.sun.btrace.samples;
import com.sun.btrace.annotations.*;
import static com.sun.btrace.BTraceUtils.*;
@BTrace
public class AllLines {
@OnMethod(
clazz="/.*/",
location=@Location(value=Kind.LINE, line=-1)
)
public static void online(@ProbeClassName String pcn, @ProbeMethodName String pmn, int line) {
print(Strings.strcat(pcn, "."));
print(Strings.strcat(pmn, ":"));
println(line);
}
}
这直接来自示例目录,只是出于绝望地更改了“clazz =” /.*/“,”以打印出一些内容。没运气。
我指向btrace指向的pid是我开发的一个简单Java程序,仅用于测试目的,该程序在循环上调用某个方法。我正在通过Eclipse运行它。
有什么想法我可能会错过吗?
谢谢!
更新:打开调试模式以发现它挂在“调试:检查端口可用性:2020”。有任何想法吗 ?
最佳答案
您尝试跟踪的类是使用javac -g
还是至少使用javac -g:lines
编译的?您需要执行此操作才能访问字节码中的行号信息。
另外,为所有类的所有方法启用行跟踪是一个真正的 Bad Idea(tm)。您将导致大量的类重新转换和重新加载,并且如果运气不好,您可能会击倒应用程序(由于内存问题)。