개요
소프트웨어 디버깅시 가장 까다로운 에러중의 하나가 메모리 관련된 것이 메모리 누수(Leak)일 것이다. VxWorks 6.6에서는 MemScope를 제공하여, 메모리 전반에 걸친 디버깅 정보를 제공해주는 매우 유용한 툴이다. Workbench를 구입했다면 기본적으로 사용할 수 있다.
준비사항
첨부된 메뉴얼의 2.2 Requirements를 잘 읽어보고, 자신의 환경에 맞도록 설정해주어야 한다. 테스트 하려는 시스템의 경우 PowerPC를 사용하므로 메뉴얼에 나와있는대로 Kernel Configuration에서 다음의 옵션을 활성화해준다.
operating system components >> kernel components >> Allow 32-bit branches to handlers
실행
타켓 서버가 연결되어 있는 상태에서 MemScope를 수행해 본다. 타켓 서버를 선택한 후 오른쪽 마우스 클릭으로 메뉴를 띄워 MemScope를 선택하면 필요한 컴포넌트를 다운로드하며 MemScope를 실행한다.
결과분석
Summary View
- 시스템의 메모리 사용 요약정보를 보여준다.
- Alloc는 현재까지 new나 malloc으로 할당된 회수를 의미하며 Free는 free나 delete로 해제된 회수를 의미한다.
Aggregate View
- Alloc한 회수와 Free한 회수가 차이가 있다면, 메모리 누수가 발생한 것이다.
- Current # 항목은 바로 메모리 누수가 발생한 횟수를 말하는 것으로, 정렬하여 보면 어느 루틴이 문제가 있는지 알수가 있다.
Tree View
- Thread 및 RTP 단위로 메모리 상황을 확인할 수 있다.
Time View
- 시간에 대해 메모리 상황을 보여준다. 메모리 누수가 발생한다면 계속적으로 증가하는 그래프를 보게 될 것이다.
Fragmentation View
참고문서
- MemScope 매뉴얼 : wr_workbench_memory_analyzer_users_guide_3.0.pdf
이 글은 스프링노트에서 작성되었습니다.