2007~2011/Windows Platform2009. 8. 19. 00:01
Process 의 crash, hang 덤프를 수집하기 위해 Debug Diag 또는 adplus.vbs 를 흔히 사용하고 있습니다. 하지만 간혹 프로세스 crash 가 발생하였음에도 불구하고 터미널 세션에서 crash dump 를 수집하지 못하는 경우가 있었습니다. 이런 경우 WinDbg 를 통해서 덤프를 내려받을 수 있습니다. WinDbg 를 사용한 덤프 수집 방법에 대해서 아래와 같이 정리하였습니다. 


1. 테스트를 위해 계산기(calc.exe) 프로그램을 실행합니다.
2. WinDbg 실행 - File - Attach to a Process - calc.exe 해당 PID 선택



3. 대상 프로세스(Debuggee)가 정상적으로 Debugger Tool 에 Attach 되면 'g' 명령을 수행하여 Debuggee 가 제어권을 가지도록 넘겨 줍니다.



4. calc.exe 프로세스를 강제 종료합니다. 제어권이 다시 디버거로 돌아옵니다.
eax=00000000 ebx=00000000 ecx=7c7d0000 edx=7c9ae120 esi=7c93de6e edi=00000000
eip=7c93e514 esp=0007fde8 ebp=0007fee4 iopl=0         nv up ei pl zr na pe nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00000246
ntdll!KiFastSystemCallRet:
7c93e514 c3              ret



5. .dump 명령을 수행하여 메모리 덤프 파일을 내려 받습니다.
0:000> .dump /f d:\calc_crash.dmp
Creating d:\calc_crash.dmp - mini user dump
Dump successfully written

※ /f : Creates a complete memory dump, /o : overwrites an existing dump file  


[참고자료]
.dump Create Dump File)


작성자 : Lai Go / 작성일자 : 2009.08.18
Posted by 사용자 Lai Go

댓글을 달아 주세요

  1. Syn

    .dump 명령어에 /f 옵션이 아닌 /ma 를 사용해야 제대로 된 User mode 풀 메모리 덤프가 생성됩니다.

    2013.07.02 10:35 [ ADDR : EDIT/ DEL : REPLY ]
    • 고맙습니다. 아래 링크에 추가사항이 있네요.
      http://msdn.microsoft.com/ko-kr/library/windows/hardware/ff562428(v=vs.85).aspx

      2013.08.01 09:30 신고 [ ADDR : EDIT/ DEL ]