[로그수집] 프로세스 덤프 수집 방법
1. 개요
덤프란 특정 시점에 작업 중이던 메모리 상태를 기록한 것으로, 보통 프로그램이 비정상적으로 종료했을 때 만들어집니다. 실제로는, 그 외에 중요한 프로그램 상태도 같이 기록되곤 하는데, 프로그램 카운터, 스택 포인터 등 CPU 레지스터나, 메모리 관리 정보, 그 외 프로세서 및 운영 체제 플래그 및 정보 등이 포함됩니다.
참고 URL : https://ko.wikipedia.org/wiki/%EC%BD%94%EC%96%B4_%EB%8D%A4%ED%94%84
본 문서는 자사 제품의 프로세스 오동작 여부 또는 리소스를 과점유할 경우에 원인 분석을 확인하기 위하여 반드시 필요한 프로세스 덤프를 수집하는 방법에 대해서 안내합니다.
2. 방법
2-1. 작업 관리자 (taskmgr) 이용
- 작업 관리자 - 세부 정보로 이동합니다.
- 특정 프로세스를 우클릭하여 "덤프 파일 만들기"를 선택합니다.
- 일정 시간 후에 덤프가 생성되며, 생성 위치는 %temp%\프로세스명.DMP 입니다.
2-2. Microsoft Sysinternals ProcDump 도구 이용
- 아래 URL를 통해 ProcDump 툴을 다운로드 받습니다.
- 시스템 OS 비트 수에 맞는 ProcDump 툴을 실행합니다.
- 32 bit - procdump.exe / 64 bit - procdump64.exe
- 옵션에 따라 특정 조건일 경우에 자동으로 덤프 수집이 가능합니다.
- 자세한 옵션은 https://docs.microsoft.com/en-us/sysinternals/downloads/procdump을 참고하시기 바랍니다.
3. 자주 사용하는 Procdump 옵션
-c : 특정 CPU 점유율이 될 때 덤프를 만듭니다.
-e : Exception이 발생했을 때 덤프를 만듭니다.
-h : 5초간 hang이 걸려 윈도우 메시지를 처리할 수 없을 때 덤프를 만듭니다.
-m : 몇 Mb메모리를 사용할 때 덤프를 만듭니다.
-ma : Full memory 덤프를 만듭니다.
-n : 덤프파일의 개수를 지정합니다.
-o : 같은 이름의 덤프파일을 덮어 씁니다.
-r : Reflection Dump를 만듭니다.(Windows 7 이상).
-s : 특정 초 단위로 덤프를 만듭니다. (default 10초).
-t : 프로세스가 종료할 때 덤프를 만듭니다.
-u : 단일 코어 기준의 CPU 사용률을 설정하여 덤프를 만듭니다.
-x : 프로그램을 실행 시키고 다른 파라미터 조건에 따라 덤프를 만듭니다.
예시 1 ) notepad 프로세스의 전체 메모리 덤프를 수집
procdump.exe -ma notepad.exe
예시 2 ) PrvcSvc 프로세스의 CPU가 50%일 때, 5초 간격으로 3번의 PrvcSvc 프로세스 덤프를 수집
procdump.exe -c 50 -s 60 -n 3 PrvcSvc.exe
4. 주의사항
윈도우 10 RS4 이상부터는 V3 메인 프로세스인 ASDSvc 프로세스가 Protected 프로세스로 동작하기 때문에 해당 프로세스 덤프를 수집하기 위해서는 별도의 툴이 필요합니다.
자세한 방법 [Protected 프로세스 덤프 수집 방법] 을 참고하시기 바랍니다.