반응형

동적으로 할당한 힙 메모리의 누수를 탐지해 보자.

 

_NT_SYMBOL_PATH에 심볼 경로를 설정한다.

 

gflags를 실행한다.

/i: Image file settings

+ust: Creates a run-time stack trace database in the address space of a particular process (image file mode) or all processes (system-wide). (Create user mode stack trace database flag)

 

gflags.zip
0.06MB

 

메모리 누수가 의심되는 프로그램을 실행한다.

 

실행한 프로그램의 PID를 확인한다. (10368)

 

 

메모리 누수가 의심되는 동작 전 umdh를 실행해 메모리 덤프(dump1.dmp)를 만든다.

-p: specify the PID
-f: specify the name and location of the output file for the heap dump

 

umdh.zip
0.04MB

 

메모리 누수를 일으키는 동작을 실행한다. (8회)

 

다시 umdh를 실행해 메모리 덤프(dump2.dmp)를 만든다.

 

두 덤프 파일의 차이를 diff.txt 파일로 보낸다.

 

 

diff.txt 파일을 확인한다.

8회의 동작으로 320바이트의 메모리가 할당되고 해제되지 않았음을 확인 할 수 있다. 메모리 누수로 의심되는 코드는 CLabAppDlg 클래스의 OnMemoryleakBtn 함수다.

 

반응형
Posted by J-sean
: