ProcDump v11.0
마크 루시노비치와 앤드류 리차즈
게시 날짜: 2022/11/03
ProcDump(714KB)
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)
다음에서 실행됩니다.
- 클라이언트: Windows 8.1 이상.
- 서버: Windows Server 2012 이상.
자세한 정보
- 조각 모음 도구: #9 - ProcDump Defrag Tools의 이 에피소드는 도구가 캡처한 내용과 예상되는 중단 기간을 다룹니다.
- 조각 모음 도구: #10 - ProcDump - 트리거 이 에피소드에서는 특히 첫 번째 & 2차 예외에 대한 트리거 옵션을 다룹니다.
- 조각 모음 도구: #11 - ProcDump - Windows 8 & 프로세스 모니터 이 에피소드에서는 최신 애플리케이션 지원 및 프로세스 모니터 로깅 지원을 다룹니다.