다음을 통해 공유


ProcDump v11.0

Mark Russinovich 및 Andrew Richards 작성

게시일: 2022년 11월 3일

DownloadProcDump 다운로드(714KB)

Linux용 ProcDump 다운로드(GitHub)

ZoomIt으로 생성

소개

ProcDump는 CPU 스파이크에 대한 애플리케이션을 모니터링하고 관리자 또는 개발자가 스파이크의 원인을 확인하는 데 사용할 수 있는 크래시 덤프를 생성하는 것이 주 목적인 명령줄 유틸리티입니다. ProcDump는 또한 중단된 창 모니터링(Windows 및 작업 관리자가 사용하는 동일한 창 중단 정의 사용), 처리되지 않은 예외 모니터링을 포함하며 시스템 성능 카운터의 값을 기반으로 덤프를 생성할 수 있습니다. 또한 다른 스크립트에 포함할 수 있는 일반 프로세스 덤프 유틸리티 역할을 할 수도 있습니다.

ProcDump 사용

캡처 사용량:

procdump.exe [-mm] [-ma] [-mt] [-mp] [-mc <Mask>] [-md <Callback_DLL>] [-mk]
            [-n <Count>]
            [-s <Seconds>]
            [-c|-cl <CPU_Usage> [-u]]
            [-m|-ml <Commit_Usage>]
            [-p|-pl <Counter> <Threshold>]
            [-h]
            [-e [1] [-g] [-b] [-ld] [-ud] [-ct] [-et]]
            [-l]
            [-t]
            [-f  <Include_Filter>, ...]
            [-fx <Exclude_Filter>, ...]
            [-dc <Comment>]
            [-o]
            [-r [1..5] [-a]]
            [-at <Timeout>]
            [-wer]
            [-64]
            {
                {{[-w] <Process_Name> | <Service_Name> | <PID>} [<Dump_File> | <Dump_Folder>]}
            |
                {-x <Dump_Folder> <Image_File> [Argument, ...]}
            }

설치 사용량:

procdump.exe -i [Dump_Folder]
            [-mm] [-ma] [-mt] [-mp] [-mc <Mask>] [-md <Callback_DLL>] [-mk]
            [-r]
            [-at <Timeout>]
            [-k]
            [-wer]

사용량 제거:

procdump.exe -u

덤프 유형:

덤프 유형 설명
-mm '미니' 덤프 파일을 작성합니다. (기본값)
- 직간접적으로 참조된 메모리(스택 및 참조 대상)를 포함합니다.
- 모든 메타데이터(프로세스, 스레드, 모듈, 핸들, 주소 공간 등)를 포함합니다.
-마 '전체' 덤프 파일을 작성합니다.
- 모든 메모리(이미지, 매핑 및 개인)를 포함합니다.
- 모든 메타데이터(프로세스, 스레드, 모듈, 핸들, 주소 공간 등)를 포함합니다.
-mt 'Triage' 덤프 파일을 작성합니다.
- 직접 참조된 메모리(스택)를 포함합니다.
- 제한된 메타데이터(프로세스, 스레드, 모듈 및 핸들)를 포함합니다.
- 중요한 정보를 제거하려고 시도하지만 보장되지는 않습니다.
-mp 'MiniPlus' 덤프 파일을 작성합니다.
- 모든 개인 메모리와 모든 읽기/쓰기 이미지 또는 매핑된 메모리를 포함합니다.
- 모든 메타데이터(프로세스, 스레드, 모듈, 핸들, 주소 공간 등)를 포함합니다.
- 크기를 최소화하기 위해 512MB를 초과하는 가장 큰 Private 메모리 영역은 제외됩니다.
  메모리 영역은 동일한 크기의 메모리 할당의 합으로 정의됩니다.
  덤프는 전체 덤프만큼 상세하지만 크기는 10%-75%입니다.
- 참고: CLR 프로세스는 디버깅 제한으로 인해 전체(-ma)로 덤프됩니다.
-mc '사용자 지정' 덤프 파일을 작성합니다.
- 지정된 MINIDUMP_TYPE 마스크(Hex)로 정의된 메모리 및 메타데이터를 포함합니다.
-md '콜백' 덤프 파일을 작성합니다.
- 지정된 DLL의 MiniDumpCallbackRoutine라는 MiniDumpWriteDump 콜백 루틴에 의해 정의된 메모리를 포함합니다.
- 모든 메타데이터(프로세스, 스레드, 모듈, 핸들, 주소 공간 등)를 포함합니다.
-mk 또한 '커널' 덤프 파일을 작성하세요.
- 프로세스에서 스레드의 커널 스택을 포함합니다.
- OS는 클론(-r)을 사용할 때 커널 덤프(-mk)를 지원하지 않습니다.
- 여러 덤프 크기를 사용하는 경우 덤프 크기별로 커널 덤프를 가져옵니다.

조건:

조건 설명
-a 중단을 방지합니다. -r가 필요합니다. 트리거로 인해 동시 덤프 제한 초과로 인해 대상이 장기간 일시중단되는 경우 트리거를 건너뜁니다.
-at 시간 제한 시 중단을 방지합니다. N초에 트리거 수집을 취소합니다.
-b 디버그 중단점을 예외로 취급하세요(그렇지 않으면 무시하세요).
-c 프로세스의 덤프를 생성하기 위한 CPU 임계값입니다.
-cl 프로세스의 덤프를 생성할 CPU 임계값 미만입니다.
-dc 생성된 Dump Comment에 지정된 문자열을 추가합니다.
-e 프로세스에서 처리되지 않은 예외가 발생하면 덤프를 작성합니다.
첫 번째 기회 예외에서 덤프를 생성하려면 1를 포함합니다.
DLL(모듈)이 로드될 때 덤프를 생성하려면 -ld을 추가합니다(필터링 적용).
DLL(모듈)이 언로드될 때 덤프를 생성하려면 -ud을 추가합니다(필터링 적용).
스레드가 생성될 때 덤프를 생성하려면 -ct을 추가합니다.
스레드가 종료될 때 덤프를 생성하려면 -et을 추가합니다.
-f DLL 로드/언로드 시 예외 내용, 디버그 로깅 및 파일 이름을 필터링(포함)합니다. 와일드카드(*)가 지원됩니다.
-fx DLL 로드/언로드 시 예외 내용, 디버그 로깅 및 파일 이름을 필터링(제외)합니다. 와일드카드(*)가 지원됩니다.
-g 관리 프로세스에서 네이티브 디버거로 실행합니다(interop 없음).
-h 프로세스에 중단된 창이 있는 경우 덤프를 작성합니다(최소 5초 동안 창 메시지에 응답하지 않음).
-k 복제(-r) 후 또는 덤프 수집 종료 시 프로세스를 종료합니다.
-l 프로세스의 디버그 로깅을 표시합니다.
-m 덤프를 생성할 메모리 커밋 임계값(MB)입니다.
-ml 메모리 커밋이 지정된 MB 값 아래로 떨어지면 트리거됩니다.
-n 종료하기 전에 기록할 덤프 수입니다.
-o 기존 덤프 파일을 덮어씁니다.
-p 성능 카운터가 지정된 임계값에 있거나 이를 초과하면 트리거됩니다. 일부 카운터 및/또는 인스턴스 이름은 대소문자를 구분할 수 있습니다.
-pl 성능 카운터가 지정된 임계값 아래로 떨어지면 트리거됩니다.
-r 클론을 사용하여 덤프하세요. 동시 제한은 선택 사항입니다(기본값 1, 최대 5). OS는 클론(-r)을 사용할 때 커널 덤프(-mk)를 지원하지 않습니다. 주의: 높은 동시성 값은 시스템 성능에 영향을 미칠 수 있습니다.
- Windows 7: 리플렉션을 사용합니다. OS는 -e을(를) 지원하지 않습니다.
- Windows 8.0: 리플렉션을 사용합니다. OS는 -e을(를) 지원하지 않습니다.
- Windows 8.1+: PSS를 사용합니다. 모든 트리거 유형이 지원됩니다.
-s 덤프가 기록되기 전 연속 시간(초)(기본값은 10).
-t 프로세스가 종료되면 덤프를 씁니다.
-u 단일 코어를 기준으로 CPU 사용량을 처리합니다(-c와 함께 사용됨).
-v 디버그 전용: 자세한 정보 출력.
-w 실행 중이 아닌 경우 지정된 프로세스가 시작될 때까지 기다리세요.
-워 (가장 큰) 덤프를 Windows 오류 보고에 대기시킵니다.
-x 선택적 인수를 사용하여 지정된 이미지를 시작합니다. 스토어 애플리케이션 또는 패키지인 경우 ProcDump는 다음 활성화 시에만 시작됩니다.
-y HIDDEN: 스토어 애플리케이션 활성화.
-64 기본적으로 ProcDump는 64비트 Windows에서 실행될 때 32비트 프로세스의 32비트 덤프를 캡처합니다. 이 옵션은 64비트 덤프를 생성하도록 재정의합니다. WOW64 하위 시스템 디버깅에만 사용하세요.

라이선스 계약:

Sysinternals 라이선스 계약에 자동으로 동의하려면 -accepteula 명령줄 옵션을 사용하세요.

자동 종료:

-cancel <Target Process PID>

이 옵션을 사용하거나 이름이 ProcDump-<PID>인 이벤트를 설정하는 것은 Ctrl+C를 입력하여 ProcDump를 정상적으로 종료하는 것과 같습니다. 정상적인 종료는 캡처가 활성화된 경우 프로세스가 다시 시작되도록 합니다. 취소는 프로세스를 모니터링하는 모든 ProcDump 인스턴스에 적용됩니다.

파일 이름:

기본 덤프 파일 이름: PROCESSNAME_YYMMDD_HHMMSS.dmp

다음 대체가 지원됩니다.

대체 설명
프로세스 이름 프로세스 이름
PID 프로세스 ID
예외 코드 예외 코드
YYMMDD 년/월/일
HHMMSS 시/분/초

예제

  • 'notepad'라는 프로세스의 미니 덤프를 작성합니다(일치 항목은 하나만 존재할 수 있음).

    C:\>procdump notepad
    
  • PID가 '4572'인 프로세스의 전체 덤프를 작성합니다.

    C:\>procdump -ma 4572
    
  • Mini를 먼저 작성한 다음 PID '4572'를 사용하여 프로세스의 전체 덤프를 작성하세요.

    C:\>procdump -mm -ma 4572
    
  • 'notepad'라는 프로세스의 5초 간격으로 3개의 미니 덤프를 작성합니다.

    C:\>procdump -n 3 -s 5 notepad
    
  • 5초 동안 CPU 사용량이 20%를 초과하면 'consume'이라는 프로세스의 미니 덤프를 최대 3개 작성합니다.

    C:\>procdump -n 3 -s 5 -c 20 consume
    
  • 해당 창 중 하나가 5초 이상 응답하지 않는 경우 'hang.exe'라는 프로세스에 대한 미니 덤프를 작성합니다.

    C:\>procdump -h hang.exe
    
  • 해당 창 중 하나가 5초 이상 응답하지 않는 경우 'hang.exe'라는 프로세스에 대한 전체 및 커널 덤프를 작성합니다.

    C:\>procdump -ma -mk -h hang.exe
    
  • 총 시스템 CPU 사용량이 10초 동안 20%를 초과하면 'outlook'이라는 프로세스의 미니 덤프를 작성합니다.

    C:\>procdump outlook -s 10 -p "\Processor(_Total)\% Processor Time" 20
    
  • Outlook의 핸들 수가 10,000을 초과하면 'outlook'이라는 프로세스의 전체 덤프를 작성합니다.

    C:\>procdump -ma outlook -p "\Process(Outlook)\Handle Count" 10000
    
  • 핸들 수가 10,000을 초과할 때 'svchost' PID 1234, 인스턴스 #87의 전체 덤프를 작성합니다.

    C:\>procdump -ma 1234 -p "\Process(svchost#87)\Handle Count" 10000
    

    참고: 다중 인스턴스 카운터
    카운터 인스턴스가 여러 개인 경우 이름 및/또는 인스턴스 번호를 포함해야 합니다.

    \Processor(NNN)\% Processor Time
    \Thermal Zone Information(<name>)\Temperature
    \Process(<name>[#NNN])\<counter>
    

    이전 OS에서는 \Process 카운터에 대한 PID를 추가해야 합니다.

    \Process(<name>[_PID])\<counter>
    

    도움말: 카운터를 보려면 성능 모니터를 사용하세요(특히 대소문자 구분).
    팁:\Process(*) 기반 카운터의 경우 PowerShell을 사용하여 PID를 #NNN에 매핑하세요.

    Get-Counter -Counter "\Process(*)\ID Process"
    
  • 두 번째 기회 예외에 대한 전체 덤프를 작성합니다.

    C:\>procdump -ma -e w3wp.exe
    
  • 1차 또는 2차 예외에 대한 전체 덤프를 작성합니다.

    C:\>procdump -ma -e 1 w3wp.exe
    
  • 디버그 문자열 메시지에 대한 전체 덤프를 작성합니다.

    C:\>procdump -ma -l w3wp.exe
    
  • w3wp.exe의 각 1차 또는 2차 예외에 대해 최대 10개의 전체 덤프를 작성합니다.

    C:\>procdump -ma -n 10 -e 1 w3wp.exe
    
  • 예외의 코드/이름/msg에 'NotFound'이(가) 포함된 경우 최대 10개의 전체 덤프를 작성합니다.

    C:\>procdump -ma -n 10 -e 1 -f NotFound w3wp.exe
    
  • 디버그 문자열 메시지에 'NotFound'이(가) 포함된 경우 최대 10개의 전체 덤프를 작성합니다.

    C:\>procdump -ma -n 10 -l -f NotFound w3wp.exe
    
  • '메모장'이라는 프로세스를 기다립니다(예외가 있는지 모니터링).

    C:\>procdump -e -w notepad
    
  • '메모장'이라는 프로세스를 시작하고 예외가 있는지 모니터링합니다.

    C:\>procdump -e -x c:\dumps notepad
    
  • 출시를 위해 등록하고 스토어 '애플리케이션' 활성화를 시도합니다. 새 ProcDump 인스턴스가 활성화되면 시작됩니다.

    C:\>procdump -e -x c:\dumps Microsoft.BingMaps_8wekyb3d8bbwe!AppexMaps
    
  • 스토어 '패키지' 출시를 위해 등록하세요. 새 ProcDump 인스턴스는 (수동으로) 활성화되면 시작됩니다.

    C:\>procdump -e -x c:\dumps Microsoft.BingMaps_1.2.0.136_x64__8wekyb3d8bbwe
    
  • 처리되지 않은 예외가 있는 경우 Microsoft Exchange Information Store의 MiniPlus 덤프를 작성합니다.

    C:\>procdump -mp -e store.exe
    
  • 덤프를 작성하지 않고 w3wp.exe의 예외 코드/이름을 표시합니다.

    C:\>procdump -e 1 -f "" w3wp.exe
    
  • Windows 7/8.0; 리플렉션을 사용하여 5개의 연속 트리거에 대한 중단을 줄입니다.

    C:\>procdump -r -ma -n 5 -s 15 wmplayer.exe
    
  • Windows 8.1+; PSS를 사용하여 5개의 동시 트리거에 대한 중단을 줄입니다.

    C:\>procdump -r 5 -ma -n 5 -s 15 wmplayer.exe
    
  • (AeDebug) 사후 디버거로 ProcDump를 설치합니다.

    C:\>procdump -ma -i c:\dumps
    

    ..또는..

    C:\Dumps>procdump -ma -i
    
  • ProcDump를 (AeDebug) 사후 분석 디버거로 제거:

    C:\>procdump -u
    

예제 명령줄 목록을 참조하세요(예제는 위에 나열되어 있음).

C:\>procdump -? -e
  • Windows 내부 설명서 Mark Russinovich와 David Solomon이 작성한 Windows 내부 설명서의 공식 업데이트 및 정오표 페이지입니다.
  • Windows Sysinternals 관리자 참조 Mark Russinovich 및 Aaron Margosis의 Sysinternals 유틸리티에 대한 공식 가이드는 모든 도구, 기능, 문제 해결에 사용하는 방법 및 실제 사용 사례에 대한 설명을 포함합니다

DownloadProcDump 다운로드(714KB)

Linux용 ProcDump 다운로드(GitHub)

다음에서 실행:

  • 클라이언트: Windows 8.1 이상.
  • 서버: Windows Server 2012 이상.

자세한 정보