0

我有这个运行方法的线程:

  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() 方法可以根据许多外部条件调用许多其他函数。

我试图创建一个NullPointerException或将此处引用的代码行之一放在 run() 方法的中间,但我总是只有最后一个跟踪是 run() 方法(我曾经使用过的同一行打印轨迹)。

 Thread.currentThread().getStackTrace()

或者

 for (StackTraceElement ste : Thread.currentThread().getStackTrace()) {
    System.out.println(ste + "\n");
 }

或者

Thread.dumpStack()

PS:我对调试器不是很熟悉,我不知道这是否可以用它来完成。

4

1 回答 1

2

您可以在http://blog.zvikico.com/2007/11/five-ways-for-t.html找到一些有用的信息

我认为一些分析器可能能够提供生成所有调用跟踪的选项。

于 2012-03-31T22:56:16.240 回答