336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

기술연구소 개발1팀 이행렬 과장입니다.

이번에 서울시청에서 AutoServerUpdate.exe가 메모리를 점진적으로 증가시켜 결국에는 Dump를 발생하고

죽는 현상이 있어서 버그를 수정하다가 알아두면 좋은 팁이 하나 있어 소개 드립니다.

기존에 아셧던 분들도 많이 계시겠지만 실제로 실무에서 사용하시면 도움이 될것 같아 보냅니다.


프로그램 개발하면서 메모리 누수가 발생하는 경우 소스 코드를 뒤져가면서 new / malloc / delete 구문을

일일이 찾아가면서 해제 되지 않아 누수가 발생할 곳을 직접 찾는 경우가 많습니다.

그렇지 않은 경우 Windbg 패키지에서 제공된 GFlags.exe 툴을 이용하여 설정한후 덤프가 발생한 경우

잘못된 포인터 사용등을 확인 하는경우가 많습니다.

위에 예시된 방법을 사용하지 않고 메모리 누수를 찾는 방법이 있어 소개해 드립니다.

1) UMDH Tool(Windbg 패키지에 포함됨) 을 이용하여 메모리 누수를 탐지하는 방법

2) LeakDiag Tool을 이용하여 메모리 누수를 탐지하는 방법

이 있는데, 혹자는 LeakDiag Tool 을 이용 하여 메모리 누수를 탐지하는 방법이 좋다고 하는데 그부분은

나중에 확인해보시면 되고 여기서는 UMDH  Tool를 사용하여 찾는 방법입니다.

ms 에서 나와 있는 내용 이므로 링크된 주소를 보시면 더 자세히 알수 있습니다

http://support.microsoft.com/kb/268343/ko


1. UMDH 유틸리티를 설치합니다.(Windbg 패키지에 포함됨)

2. UMDH를 설치한 폴더가 포함되도록 PATH 시스템 환경 변수를 설정합니다.

3. UMDH가 심볼파일을 찾을 수 있도록 _NT_SYMBOL_PATH 환경 변수를 Microsoft 기본 Symbol를 설정합니다.

다음처럼 _NT_SYMBOL_PATH = SRV*c:\symbols*http://msdl.microsoft.com/download/symbols;c:\AutoServerUpdate.pdb

시스템 환경 변수를 설정해주고,

C:\Program Files\Debugging Tools for Windows (x86)>gflags -i AutoServerUpdate.exe +ust

=>AutoServerUpdate.exe의 힙 내용을 덤프하려는 경우 먼저 테스트할 응용 프로그램에 대해 스택 추적 획득을 설정해야 합니다

작업관리자에서 PID를 찾을 수 있습니다.

방금 시작한 AutoServerUpdate 프로세스의 PID가 124라고 가정할 경우 UMDH를 다음 명령과 함께 사용하여 힙 덤프를 얻을 수 있습니다.

umdh -p:124 -f:AutoServerUpdateBefore.log


그리고 메모리가 계속 누수 되는 시점에서 다음 명령을 다시 해줍니다.

umdh -p:124 -f:AutoServerUpdateAfter.log


UMDH 로그 파일(AutoServerUpdateBefore.log / AutoServerUpdateAfter.log)에 프로세스의 현재 힙 상태에 대한 중요한 정보가 포함되어 있지만,

 메모리 누수를 찾으려는 경우 두 로그의 출력을 비교하고 두 덤프 파일 사이에 어떤 호출 스택이 가장 크게 늘어났는지 알아내는 것이 더 유용할 수 있습니다.

Umdh.exe 유틸리티는 두 UMDH 로그를 비교하여 이들 사이의 차이점 분석을 제공하는 데 도움이 됩니다. 다른 간격으로 두 로그를 캡처한 후에 다음 명령을 사용하면 됩니다.

umdh AutoServerUpdateBefore.log AutoServerUpdateAfter.log > result.txt

출력된 result.txt 파일을 열어 어떤 호출 스택이 가장 크게 늘어 나고 해제 되지 않았는지 확인(이 파일에는 해제되지 않은 메모리 할당 횟수/ 바이트가 표시됨) 함으로써

그 때의 콜스택을 보고 소스를 보면  메모리 누수를 금방 찾을수 있습니다.

이상입니다

출처 : http://blog.naver.com/kkan22/80098424440

블로그 이미지

뚱땡이 우주인

,