2007~2011/Tools2010. 3. 23. 10:12

지금까지 비정상적인 User Mode Process 의 원인을 분석하기 위해 지금까지 adplus.vbs, DebugDiag, TTTracer 등을 주로 사용해 왔습니다. 하지만 조금 아쉽게도 이 도구를 사용해서 특정 CPU 사용률을 조건으로 하여 덤프를 수집할 순 없었습니다.

그래서 이 녀석이 등장했나 봅니다. 'ProcDump'

Mark Russinovich 님이 제공한 ProcDump 를 사용하면 CPU 사용률이 특정 조건에 만족하였을 때 덤프를 생성할 수 있습니다. 간단한 예제를 아래와 같이 정리하였습니다.


[시나리오]
1. ProcDump 를 설정하여 notepad.exe 프로세스가 CPU 사용률 50%를 5초 이상 유지할 경우 notepad.dmp 덤프 생성
2. NOTEPAD.EXE 파일을 열고 300MB 짜리 memory.dmp 파일을 오픈하여 CPU 사용률을 강제로 증가 유발


[절차]
1. notepad.exe 파일을 실행합니다.
2. notepad.exe 프로세스가 CPU 사용을 50% 이상 5초가 지속할 경우 덤프를 생성하도록 ProcDump 를 설정합니다.
   (explorer.exe 같이 동일한 이름이 여러 개 실행되고 있을 경우 아무런 옵션 없이 PID 를 입력하시면 됩니다)

C:\> ProcDump -c 50 -s 5 notepad.exe notepad.dmp


덤프를 수집이 준비되었습니다.





2. notepad.exe 에서 대용량 문서(예제에서는 300MB 파일)를 '열기' 메뉴를 통해 가져오면 CPU 사용률이 증가하며 메모리 덤프가 자동으로 생성됩니다.




3. 수집된 덤프 파일을 WinDBG 를 통해 읽어보면 수집 조건을 확인할 수 있습니다.

Loading Dump File [Z:\notepad_100323_094043.dmp]
User Mini Dump File: Only registers, stack and portions of memory are available

Comment: '*** Process exceeded 50% CPU for 5 seconds. Thread consuming CPU: 3004 (0xbbc) '



덤으로....;
일반적인 프로세스 hang dump 를 수집할 때, 아래와 같은 명령을 사용할 수도 있습니다.

D:\> procdump notepad.exe notepad.dmp -ma



오~ 필요할 때 써먹을 수 있을 듯 합니다. 현상이 재현될 때까지 눈빠지게 기다리고 있지 않아도 될 것 같습니다. 이 밖의 사용 방법에 대해서는 아래 참고자료에 링크된 자료를 확인해 보시면 좋을 것 같습니다. 좋은 자료와 정보를 주시는 모든 분들께 다시 한 번 감사드리며 ......


[참고자료]
ProcDump v1.72
http://technet.microsoft.com/en-us/sysinternals/dd996900.aspx

ProcDump 사용법
http://blogs.msdn.com/coreinternals/archive/2009/09/29/procdump.aspx


작성자 : Lai Go / 작성일자 : 2010.03.23

Posted by Lai Go