ADPlus로 유저모드 Hang dump 생성하기


이전 '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]을 다운로드 하여 설치하시기 바랍니다.
Install Debugging Tools for Windows 32-bit Version (Previous Release version 6.11.1.404)
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의 경우 덤프를 생성하기 위해 아래 명령을 수행합니다
문제가 발생하는 컴퓨터에서 명령창으로부터 수동으로 디버거 디렉터리(기본값은 \Program Files\Debugging Tools For Windows)에서 다음 명령을 실행하십시요.
이 명령을 실행하면 자동으로 디버거와 함께 Internet Explorer가 시작되며 자료가 수집됩니다. 창을 임의로 닫지 마시고 문제가 재현되어 닫힐 때까지 그냥 두십시오.
  • 아래명령을 반드시 수동으로 입력 해 주시기 바랍니다. 복사하는 경우 – 문자가 다른 문제로 치환 되어서 실행시 오류가 발생합니다.
cscript adplus.vbs -crash -quiet -sc "c:\Program Files\Internet Explorer\iexplore.exe"
4)문제의 현상을 재현 시킵니다, 혹은 재현 될때까지 해당 IE를 놔둡니다.
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
이 더운 여름에 몇일 무리해서 운동을 했더니 몸이 더 무거워진 느낌이네요 (더위 먹었나?.. ㅜㅜ)
여러분 모두 몸 관리 잘하시고 아직 한달 더 남은 여름 무리 없이 넘기시길 빕니다 ^^
Comments (4)

  1. maystyle says:

    정리 해야지 정리 해야지 하면서 정리 못하고 있었는데…

    한번에 정리해 주시는 쎈쑤~~~

    감사합니다…ㅋ

  2. sokkuma says:

    감사합니다 ^^;;

    제 블로그에 링크 좀 걸께요.. ㅎㅎ

Skip to main content