ProcDump v11.0

마크 루시노비치와 앤드류 리차즈

게시 날짜: 2022/11/03

다운로드ProcDump(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

덤프 유형:

덤프 유형 Description
-M m 'Mini' 덤프 파일을 작성합니다. (기본값)
- 직접 및 간접적으로 참조되는 메모리(스택 및 참조하는 메모리)를 포함합니다.
- 모든 메타데이터(프로세스, 스레드, 모듈, 핸들, 주소 공간 등)를 포함합니다.
-Ma '전체' 덤프 파일을 작성합니다.
- 모든 메모리(이미지, 매핑 및 프라이빗)를 포함합니다.
- 모든 메타데이터(프로세스, 스레드, 모듈, 핸들, 주소 공간 등)를 포함합니다.
-마운트 '심사' 덤프 파일을 작성합니다.
- 직접 참조된 메모리(스택)를 포함합니다.
- 제한된 메타데이터(프로세스, 스레드, 모듈 및 핸들)를 포함합니다.
- 중요한 정보의 제거가 시도되었지만 보장되지는 않습니다.
-Mp 'MiniPlus' 덤프 파일을 작성합니다.
- 모든 프라이빗 메모리와 모든 읽기/쓰기 이미지 또는 매핑된 메모리를 포함합니다.
- 모든 메타데이터(프로세스, 스레드, 모듈, 핸들, 주소 공간 등)를 포함합니다.
- 크기를 최소화하기 위해 512MB를 넘는 가장 큰 프라이빗 메모리 영역이 제외됩니다.
  메모리 영역은 동일한 크기의 메모리 할당의 합계로 정의됩니다.
  덤프는 전체 덤프만큼 상세하지만 크기는 10%-75%입니다.
- 참고: CLR 프로세스는 디버깅 제한으로 인해 전체(-ma)로 덤프됩니다.
-엠씨 '사용자 지정' 덤프 파일을 작성합니다.
- 지정된 마스크(16진수)로 정의된 메모리 및 메타데이터를 MINIDUMP_TYPE 포함합니다.
-메릴랜드 '콜백' 덤프 파일을 작성합니다.
- 지정된 DLL의 MiniDumpWriteDump 이름이 인 MiniDumpCallbackRoutine 콜백 루틴으로 정의된 메모리를 포함합니다.
- 모든 메타데이터(프로세스, 스레드, 모듈, 핸들, 주소 공간 등)를 포함합니다.
-Mk '커널' 덤프 파일도 작성합니다.
- 프로세스에 스레드의 커널 스택을 포함합니다.
- OS는 클론()을 사용할 때 커널 덤프(-mk-r)를 지원하지 않습니다.
- 여러 덤프 크기를 사용하는 경우 각 덤프 크기에 대해 커널 덤프가 수행됩니다.

조건:

조건 설명
-a 중단을 방지합니다. -r가 필요합니다. 트리거로 인해 동시 덤프 제한을 초과하여 대상이 장기간 일시 중단되는 경우 트리거는 건너뜁습니다.
-에 시간 제한 시 중단을 방지합니다. 트리거의 컬렉션을 초 단위로 N 취소합니다.
-b 디버그 중단점을 예외로 처리합니다(그렇지 않으면 무시).
-c 프로세스의 덤프를 만드는 위의 CPU 임계값입니다.
-Cl 프로세스의 덤프를 만들 CPU 임계값입니다.
-Dc 생성된 덤프 주석에 지정된 문자열을 추가합니다.
-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는 클론()을 사용할 때 커널 덤프(-mk-r)를 지원하지 않습니다. 주의: 높은 동시성 값은 시스템 성능에 영향을 미칠 수 있습니다.
- Windows 7: 리플렉션을 사용합니다. OS는 를 지원하지 -e않습니다.
- Windows 8.0: 리플렉션을 사용합니다. OS는 를 지원하지 -e않습니다.
- Windows 8.1+: PSS를 사용합니다. 모든 트리거 유형이 지원됩니다.
-s 덤프가 작성되기 전 연속 초(기본값은 10)입니다.
-t 프로세스가 종료되면 덤프를 작성합니다.
-u 단일 코어(와 함께 -c사용됨)를 기준으로 CPU 사용량을 처리합니다.
-v 디버그 전용: 자세한 정보 표시 출력.
-w 실행되지 않는 경우 지정된 프로세스가 시작될 때까지 기다립니다.
-Wer (가장 큰) 덤프를 큐에 대기하여 Windows 오류 보고.
-x 선택적 인수를 사용하여 지정된 이미지를 시작합니다. 스토어 애플리케이션 또는 패키지인 경우 ProcDump는 다음 활성화에서 시작됩니다(전용).
-Y 숨겨진: 애플리케이션 활성화를 저장합니다.
-64 기본적으로 ProcDump는 64비트 Windows에서 실행할 때 32비트 프로세스의 32비트 덤프를 캡처합니다. 이 옵션을 재정의하여 64비트 덤프를 만듭니다. WOW64 하위 시스템 디버깅에만 사용합니다.

사용권 계약:

-accepteula 명령줄 옵션을 사용하여 Sysinternals 라이선스 계약을 자동으로 수락합니다.

자동화된 종료:

-cancel <Target Process PID>

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

파일:

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

지원되는 대체 항목은 다음과 같습니다.

대체 설명
PROCESSNAME 프로세스 이름
PID 프로세스 ID
EXCEPTIONCODE 예외 코드
YYMMDD 연도/월/일
Hhmmss 시간/분/초

예제

  • '메모장'이라는 프로세스의 미니 덤프를 작성합니다(일치하는 항목은 하나만 있을 수 있음).

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

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

    C:\>procdump -mm -ma 4572
    
  • 3 Mini는 '메모장'이라는 프로세스를 5초 간격으로 덤프합니다.

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

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

    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를 사용하려면 카운터에 PID를 \Process 추가해야 합니다.

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

    팁: 성능 모니터 사용하여 카운터(대/소문자 구분)를 봅니다.
    팁: 기반 카운터의 경우 \Process(*) PowerShell을 사용하여 PID를 에 매핑합니다 #NNN.

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

    C:\>procdump -ma -e w3wp.exe
    
  • 첫 번째 또는 두 번째 확률 예외에 대한 전체 덤프를 작성합니다.

    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 정보 저장소의 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
    
  • ProcDump를 (AeDebug) 사후 시스템 디버거로 설치합니다.

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

    .. 또는..

    C:\Dumps>procdump -ma -i
    
  • ProcDump를 (AeDebug) 사후 시스템 디버거로 제거합니다.

    C:\>procdump -u
    

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

C:\>procdump -? -e
  • Windows Internals Book 마크 루시노비치와 데이비드 솔로몬에 의해, Windows 내부에 최종 책에 대한 공식 업데이트 및 errata 페이지.
  • Windows Sysinternals 관리자 참조 Mark Russinovich 및 Aaron Margosis의 Sysinternals 유틸리티에 대한 공식 가이드는 모든 도구, 기능, 문제 해결에 사용하는 방법 및 실제 사용 사례에 대한 설명을 포함합니다.

다운로드ProcDump(714KB)

Linux용 ProcDump 다운로드(GitHub)

다음에서 실행됩니다.

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

자세한 정보