[개요]

  • 이 문서는 어플리케이션 프로세스의 메모리덤프를 생성하는 방법을 기술합니다. 블루스크린(BSoD) 등과 관련된 커널메모리 덤프는 다루지 않습니다.
  • 기술지원 담당자 등 자신이 개발하지 않은 프로세스의 메모리덤프를 작성해야 하는 분들을 위해 작성되었습니다.


[프로세스 Crash 발생시 메모리덤프 생성하기]

  • 프로세스에 오류가 발생하여 Crash될 때 자동으로 덤프를 생성하는 방법입니다. 
  • Crash가 발생하기 전에 미리 설정해놓아야 합니다.


  [방법1] procdump를 이용하는 방법

    • 다음의 위치에서 procdump.exe를 다운로드받아 임의의 위치에 압축해제합니다. (예 : C:\temp )

https://docs.microsoft.com/en-us/sysinternals/downloads/procdump

    • 관리자 권한으로 커맨드 쉘(cmd.exe)을 실행하여 다음의 명령을 실행합니다. (폴더 경로를 생략하는 경우 procdump.exe가 존재하는 위치에 생성됩니다.

procdump.exe -ma -i [덤프파일 생성할 폴더경로]



    • 이제 시스템에서 어떤 프로세스든 비정상 종료하게 되면 메모리덤프 파일이 생성됩니다.


    • 메모리덤프 설정을 해제하려면 다음과 같이 명령을 입력하면 됩니다.

procdump.exe -u



 [방법2] WER (Windows Error Reporting)을 이용하는 방법

    • Vista 이후부터 윈도우즈에서 실행중인 프로세스가 오류를 일으켜 Crash가 발생하면 메모리덤프를 생성하고 Microsoft로 전송하는 기능이 생겼습니다.
    • 기본설정의 경우 Microsoft로 전송된 메모리덤프는 삭제되는데, 다음의 레지스트리 위치에 키를 생성하고 값을 설정하면 메모리덤프를 로컬에 남길 수 있습니다.

키 : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps


값이름 : DumpFolder

Type : REG_EXPANDSZ

값 : C:\temp\dump


값이름 : DumpType

Type : REG_DWORD

값 : 2





    • 자세한 내용은 다음의 링크를 참조하시기 바랍니다.

https://docs.microsoft.com/ko-kr/windows/desktop/wer/collecting-user-mode-dumps



[방법3] Dr.Watson을 사용하는 방법

    • WindowsXP에서 사용하는 방법입니다.
    • 다음의 링크를 참조하시기 바랍니다.

http://kuaaan.tistory.com/213




[실행중인 프로세스의 메모리덤프 생성]

  • 오류 없이 실행중인 프로세스의 메모리덤프를 생성하는 방법입니다. 
  • 주로 Hang, DeadLock, CPU과점유 등의 이슈가 발생한 프로세스의 원인을 분석할 때 필요합니다.


  [방법1] 작업관리자를 이용하는 방법


  1. 다음 스크린샷을 참고하시기 바랍니다.  


  2. 메모리덤프는 %temp% 폴더에 생깁니다. (시작 > 실행 > 명령창에 %temp% 를 명령하고 엔터치면 바로 이동이 가능합니다.)



  [방법2] procdump 를 이용하는 방법

  1. 별도의 실행파일을 다운로드받아야 한다는 번거로움이 있지만, 스크립트 등을 이용해 자동화할 수 있고 'CPU 80% 이상 점유하는 경우에 덤프 생성' 등 다양한 기능을 사용할 수 있습니다. (procdump /? 참조)


  2. 관리자 권한 커맨드 쉘에서 다음과 같이 입력하면 됩니다.

procdump.exe notepad.exe (프로세스 이름으로 덤프 : 매치되는 프로세스가 1개인 경우에 한함)

procdump.exe 12776  (프로세스ID)


Posted by kuaaan
,


사랑합니다. 편안히 잠드소서