Как иметь след всех выполненных функций
У меня есть поток с этим методом запуска:
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
Я думаю, что некоторые из профилировщиков могут предоставить опции для генерации всех трассировок вызовов.