我有一个使用此run方法的线程:
public void run(){
MAPTable t1 = new MAPTable();
t1.init();
while(true){
try {
t1.refresh();
} catch (UnknownHostException e) {
e.printStackTrace();
}
try {
sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
我如何跟踪该线程执行的所有函数,注意init()一个refresh()方法可以根据许多外部条件调用许多其他函数。
我试图在run()方法的中间创建 NullPointerException 或放置其中一行代码referenced here,但我总是只有最后一条跟踪run()方法(我用来打印跟踪的同一行)。
Thread.currentThread().getStackTrace()
或
for (StackTraceElement ste : Thread.currentThread().getStackTrace()) {
System.out.println(ste + "\n");
}
或
Thread.dumpStack()
PS:我不太熟悉调试器,我不知道是否可以用它完成。
答案 0 :(得分:2)
您可以在http://blog.zvikico.com/2007/11/five-ways-for-t.html
中找到一些有用的信息我认为某些分析器可能能够提供生成所有呼叫跟踪的选项。