STM32 강좌

Stack 사용량 분석을 위한 Call Graph 확인

plainy 2 6,042 2017.05.26 13:24

프로그램은 복잡한 구조를 가지고 있습니다.

함수가 실행되면서 다른 함수를 호출할 수도 있습니다. 

수많은 함수를 호출하면서 stack이 쌓여갑니다.

설정한 stack크기를 초과하여 사용하게 될 경우(stack overflow) 프로그램이 이상동작할 가능성이 있습니다.

fe4e22e6c4a4941e683a9be1380943c5_1495772536_9699.png
 

또는 어떤 함수가 순서대로 호출되는지 확인할 필요가 있는 경우도 있습니다.

이를 위해 많은 tool들은 call graph기능을 제공합니다.

fe4e22e6c4a4941e683a9be1380943c5_1495772552_6432.png
 

IAR역시 Call Graph기능을 제공합니다. 이미지로 표현되지 않지만 동작을 확인하기에는 충분합니다.

 

 

Call Graph를 확인하기 위해서는 아래와 같이 project옵션을 설정하면 됩니다.

 

fe4e22e6c4a4941e683a9be1380943c5_1495772571_4853.png
 

 

fe4e22e6c4a4941e683a9be1380943c5_1495772576_8185.png
 

 

위와 같이 Stack 분석과 Call graph설정을 마치고 Compile을 하면 log파일이 생성됩니다.

Log 파일에는 아래와 같이 함수에서 사용되는 Stack의 크기와 어떤 함수가 호출되는지 Call Graph를 확인할 수 있습니다.

 

fe4e22e6c4a4941e683a9be1380943c5_1495772583_3756.png
 

Comments

Nam 2018.04.25 17:49
제가 사용하고 있는 컴파일러에는 해당 옵션이 없네요. iar6.6.7입니다.
혹시 예제에서 사용중인 컴파일러는 버전이 어떻게 되나요?
plainy 2018.04.26 09:30
IAR 7.80.4입니다.
Category
글이 없습니다.
글이 없습니다.
Facebook Twitter GooglePlus KakaoStory NaverBand