2010-06-05 3 views
1

대상에서 STACKOVERFLOW 문제를 디버깅하는 방법을 알고 싶습니다. 결론에 도달하기 위해 따라야 할 단계는 무엇입니까?대상에서 스택 오버 플로우 문제를 디버그하는 방법

+0

"대상"이란 무엇입니까? 우리는 더 많은 정보가 필요합니다. –

+0

타겟을 일반화하기 위해 넣었습니다.하지만 내 문제는 ARM 7,9 프로세서입니다. Lauterback 및 trace32를 사용할 수 있다고 가정하십시오. – dara

답변

1

스택 공간 끝에서 한 단어에 대한 메모리 쓰기 감시 점을 지정하십시오. 그런 다음 디버거가 해당 지점에 기록 될 때 중단되며 결함이 무엇인지 확인할 수 있습니다.

+0

이것은 좋은 옵션처럼 보입니다.이 옵션을 시도해보십시오. – dara

0

gdb와 같은 디버거를 통해 실행하십시오. 스택 오버 플로우가 발생했을 때 백 트레이스 (backtrace)는 정확히 어떤 기능이 무한히 반복되는지를 알려줍니다. 거기에서 그 함수에 어떤 입력이 변경되지 않는지 알아 내고 재귀를 끝낼 기본 케이스쪽으로 함수를 이동시키지 마라.

1

모든 스택은 시작시 특정 16 진수 값 (예 : 0xAAAAAAAA)으로 채울 수 있습니다. 그리고 특수 루틴을 사용하면 스택의 끝에서 알려진 값 (0xAA ..)의 양을 계산하여 첫 번째 차이점을 찾을 때까지 주기적으로 모든 스택의 최대 사용량을 모니터링 할 수 있습니다.

관련 문제