如何跟踪所有已执行的功能

时间:2012-03-31 21:52:28

标签: java multithreading printstacktrace

我有一个使用此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:我不太熟悉调试器,我不知道是否可以用它完成。

1 个答案:

答案 0 :(得分:2)

您可以在http://blog.zvikico.com/2007/11/five-ways-for-t.html

中找到一些有用的信息

我认为某些分析器可能能够提供生成所有呼叫跟踪的选项。