http://www.microsoft.com/whdc/devtools/ ··· ult.mspx
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을 제공받을 수
있습니다.
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가 설정 되야 합니다.