프로그래밍/Java
[Java] Caller Trace (호출 추적하기)
프리랜서_코더
2016. 10. 6. 10:42
현재 코드라인에서 지금까지 호출된 함수의 정보를 확인하기 위한 방법이다.
예를 들어,
Class A{
public static void main(String args...){
new B();
}
}
Class B{
public B(){
// 현재 라인에서 현재까지 호출된 정보를 확인하고 싶은 경우 사용
}
}
StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
를 이용하면 현재 호출까지 되었던 정보들을 스택 구조로 획득할 수 있다.
StackTraceElement에서 획득할 수 있는 대표적인 정보로는
for (StackTraceElement stackTraceElement : stackTrace) {
stackTraceElement.getClassName();
stackTraceElement.getFileName();
stackTraceElement.getLineNumber();
stackTraceElement.getMethodName();
}
대부분 함수이름만으로 어떠한 정보를 획득할 수 있는지 이해할 수 있다.
다만, getClassName()의 경우 fully qualified name of the Class가 리턴 된다.
(예시 : com.test 패키지 아래에 Temp.java 파일의 경우, com.test.Temp 라는 정보가 리턴된다.)