이전 'Bye~ Bye~ Dr. Watson (drwtsn32.exe)!' 포스팅에서 Vista 이후에는 Dr. Watson 대신 ADPlus를 이용해 유저모드 Crash를 수집해야 한다고 말씀드렸었는데요, 이번 포스팅에서는 ADPlus로 Crash dump와 함께 Hang dump를 생성하는 방법을 설명 드리겠습니다.
[덤프 수집 목적]
-Crash Dump는 프로세스가 죽는(?) 순간 ADPlus가 감지해 그 당시 메모리에 있던 Crash된 프로세스 내용을 dump로 저장한 뒤 그 dump를 이용해 Crash 발생 원인을 찾기 위함 입니다.
-Hang Dump는 프로세스는 살아 있으나 더 이상 Running하지 못하는 상황에 사용자가 수동으로 시차를 두고 몇번의 Dump를 생성한 뒤 각 덤프를 비교해 공통 적으로 막혀(?)있는 부분을 찾아 Hang이 발생 원인을 찾기 위함 입니다.
[ADPlus dump 수집]
1. Windbg 설치
Crash/Hang dump를 수집 하기 위해서는 기본 적으로 문제 발생하는 컴퓨터에 Windbg를 설치 해야 합니다.
아래 링크 “Download the Debugging Tools for Windows”에서 [Current Release Version]을 다운로드 하여 설치하시기 바랍니다.
32Bit 버전: http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx
64Bit 버전: http://www.microsoft.com/whdc/devtools/debugging/install64bit.mspx
2. Crash Dump 수집 방법
문제가 발생하는 Process가 running중인 상태에서 아래 작업을 순차적으로 진행해 주시기 바랍니다, 단 Crash 덤프는 한번만 설정해 놓으면 문제가 재현됨과 동시에 자동으로 Dump를 생성합니다. Hang 덤프 수집은 아래 '3. Hang Dump 수집 방법'을 참조 하십시오.
1) [시작] - [실행] - cmd 를 입력
2) Adplus.vbs가 설치된 folder로 이동합니다. 설치당시, 경로를 변경하지 않았다면, default path로 이동합니다. (Default path: %ProgramFiles%\Debugging Tools for Windows)
3) Crash의 경우 덤프를 생성하기 위해 아래 명령을 수행합니다
방법1
CScript adplus.vbs -crash -pn %Processname% (%Processname%는 해당 프로세서 명을 의미 합니다)
예) CScript adplus.vbs -crash –pn Test.exe
방법2
CScript adplus.vbs -crash -p %PID% (PID는 해당 프로세서의 Process ID를 의미 합니다)
예) CScript adplus.vbs -crash –p 1044
*화면중앙에 Message box가 두 번 나올 것이므로, 확인 버튼을 두 번 눌러주시기 바랍니다.
4) 문제의 현상을 재현 시킵니다, 혹은 재현 될때까지 해당 명령 콘솔을 놔둡니다.
Crash 덤프의 경우 문제가 발생하면 자동으로 dump가 발생합니다,
5) 문제가 발생하고 나면, Adplus.vbs가 설치된 경로(default path참조)에 "Crash_Mode_*"로 시작하는 폴더로 이동하셔서 아래 사항을 확인합니다.
- 확장자가 *.dmp라는 파일이 존재해야 한다.
- Crash Dump의 경우 *.dmp파일의 이름중에 "*_2nd_chance_*"라는 이름으로 된 file이 존재해야 합니다, 또 *.dmp파일의 이름중에 "*_1st_chance_process_shutdown_*"이라는 이름이 존재하는 경우는 사용자가 임의로 해당 user process를 종료한 경우이므로, 다시 2번 작업부터 시작해야 합니다.
3. Hang Dump 수집 방법
1) [시작] - [실행] - cmd 를 입력
2) 문제의 현상을 재현될 때 아래 명령을 실행 합니다.
Crash 덤프와 마찬가지로 프로세스를 지정하는 방법이 두가지 있습니다, 둘중 하나를 선택해 실행 하십시오. Hang 덤프는 Hang이 발생한 상태에서 1~2 분 간격으로 최소 3번 이상 덤프를 생성해야 합니다.
방법1
CScript adplus.vbs -hang-pn %Processname% (%Processname%는 해당 프로세서 명을 의미 합니다)
예) 아래와 같이 동일한 명령을 1분에 2~3번 정도 생성합니다.
CScript adplus.vbs -hang –pn Test.exe (한번 생성, 덤프가 생성이 되면 두번째 명령 실행)
CScript adplus.vbs -hang –pn Test.exe (두번째 dump 생성, 세번째 명령 실행)
CScript adplus.vbs -hang –pn Test.exe (세번째 dump 생성)
방법2
CScript adplus.vbs -hang-p %PID% (PID는 해당 프로세서의 Process ID를 의미 합니다)
예) 아래와 같이 동일한 명령을 1분에 2~3번 정도 생성합니다.
CScript adplus.vbs -hang –p 1044 (한번 생성, 덤프가 생성이 되면 두번째 명령 실행)
CScript adplus.vbs -hang –p 1044 (두번째 dump 생성, 세번째 명령 실행)
CScript adplus.vbs -hang –p 1044 (세번째 dump 생성)
3) 문제가 발생하고 나면, Adplus.vbs가 설치된 경로(default path참조)에 확장자가 *.dmp라는 파일이 존재하는지 확인 합니다.
[관련문서]
ADPlus를 사용하여 "중지"와 "충돌" 문제를 해결하는 방법
http://support.microsoft.com/kb/286350/ko
이 더운 여름에 몇일 무리해서 운동을 했더니 몸이 더 무거워진 느낌이네요 (더위 먹었나?.. ㅜㅜ)
여러분 모두 몸 관리 잘하시고 아직 한달 더 남은 여름 무리 없이 넘기시길 빕니다 ^^