Как иметь след всех выполненных функций

У меня есть поток с этим методом запуска:

  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: я не очень знаком с отладчиком, и я не знаю, можно ли это сделать с ним.

1 ответ

Решение

Вы можете найти некоторую полезную информацию в http://blog.zvikico.com/2007/11/five-ways-for-t.html

Я думаю, что некоторые из профилировщиков могут предоставить опции для генерации всех трассировок вызовов.

Другие вопросы по тегам