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を作成しようとしたり、ここで参照されているコード行の 1 つを 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 に答える