2012-06-22 4 views
1

어떻게 스택 깊이를 추적 할 수 있는지 혼란 스럽습니다. 사실,이 질문은 내 질문 중 하나에 대답 https://stackoverflow.com/a/11157985/1010943과 관련이 있습니다. 대답은 정확하고 이해했지만 TIP을 이해할 수는 없었습니다. Google 검색은 유용한 정보를 밝히지 않습니다. 그것은 내가 이클립스 IDE디버깅을위한 스택 깊이 추적

+0

스택 또는 데이터 스택을 스택이라고합니다. – MikeTheLiar

답변

2

를 사용하고 그 다음 중요한 경우 Bytheway는, 당신은 당신의 재귀 함수에 깊이 PARAM을 포함, 또는 Thread.getStackTrace를 사용하여 스택 깊이 추적 할 수 있습니다()

+0

감사합니다. 깊이 매개 변수를 사용하여이 작업을 수행했으며 getStackTrace를 사용하려고했지만이를 위반할 수 없습니다. 모든 힌트 (코드 조각) – LivingThing

3

그냥 (라고하는 int 매개 변수를 추가 말하자면) 깊이.
재귀 함수를 처음 호출 할 때 depth = 0을 전달하십시오.
재발 할 때마다 깊이 +1을 통과하십시오.
따라서 깊이는 지금까지 반복적으로 몇 번이나 반복되었습니다.

또는 호출 스택의 메서드를 좀 더 자세히 검사 할 수도 있지만 그 경로는 사용하지 않을 것입니다! ]

2

http://docs.oracle.com/javase/6/docs/api/java/lang/Thread.html#getStackTrace 살펴()

이 스레드의 스택 덤프 나타내는 스택 트레이스 요소들의 어레이를 리턴보십시오. 이 스레드가 시작되지 않았거나 종료 된 경우이 메서드는 길이가 0 인 배열을 반환합니다. 반환 된 배열의 길이가 이고 길이가 0이 아닌 경우 배열의 첫 번째 요소는 시퀀스를 나타내며 시퀀스에서 가장 최근의 메서드 호출입니다. 배열의 마지막 요소는 시퀀스에서 가장 최근 메서드 호출 인 스택의 맨 아래를 나타냅니다.