Application의 메모리누수현상 발생시 Debug Diagnostic Tool 이용 하기 Windows debugging

Application을 오랫동안 수행하다 보면, Windows OS에서 지정한 하나의 Process가 사용할 수 있는 가상메모리 영역인 2GB에 점차 접근하면서 Out Of Memory 오류가 발생하여 죽는 경험을 할 지도 모릅니다. 보통, Application에서 메모리를 할당 받아 사용한 후에, 정확하게 Release 하지 않은 상태에서 Application을 계속 운행한다면, 해당 Alloc/Non-Free pattern이 반복됨에 따라 release 되지 않는 메모리가 점차적으로 증가하여 문제가 생기는 것이 이유일 수 있습니다. 이와 같은 Application Debugging 하는 것은 상당히 곤역스러울 수 밖에 없는 데, Microsoft에서 제공하는 Debug Diagnostic Tool에서는 이와 같은 Memory Alloc pattern에 대한 Reporting을 해주는 기능을 제공하여 메모리누수가 발생한 Application을 개발자가 Troubleshooting 할 수 있도록 좋은 자료를 제공합니다. 만일, 메모리 누수가 발생하는 Application이 존재한다면, 다음과 같은 방법으로 해당 report을 제공받을 수 있습니다.

 

1.     Download (http://www.microsoft.com/downloads/details.aspx?familyid=9BFA49BC-376B-4A54-95AA-73C9156706E7&displaylang=en)

2.     설치 후 Debug Diagnostic tool 을 메모리 누수가 발생하는 Application이 수행중인 Machine에서 실행

3.     Main 화면의 Processes Tab을 선택.

4.     메모리 누수가 발생하기 전, 즉 적어도 그러한 현상을 느낄 수 없는 시점에 해당 Process를 오른쪽 마우스로 Click

5.     Monitor for Leaks Click

A.     Leaktrack.dll이 해당 process injection 하여 메모리 할당 pattern tracking 합니다.

B.     기존의 메모리 누수 pattern 보다 좀 더 빨리 현상이 진행될 수 있습니다.

6.     충분히 메모리가 증가하여 1G~1.5 G까지 된다면, 다시 해당 Process를 오른쪽 마우스로 Click 한 후에

7.     Create Full Userdump dmp file 을 떨어 뜨립니다.

8.     Main 화면의 Advanced Analysis Tab으로 이동

9.     Available Analysis Scripts 에서 Memory Pressure Analyzers 를 선택하고,

10.   Data File Path 7번에서 수집된 .dmp 파일을 load 하고 start analysis 를 진행하면, .mht 파일 형태의 report 를 제공받습니다.

11.   Virtual Memory의 사용량이나 heap 사용량등을 확인할 수 있으며, 해당 메모리를 사용하고 있는 Allocation Function을 알 수 있습니다.

12.   이러한 정보를 위해서는 반드시 Tools options에 해당 Application Symbol file Microsoft에서 제공하는 public symbol path가 설정 되야 합니다.

 


덧글

댓글 입력 영역