학습
모듈
App Service 진단으로 Web App Down 시나리오 문제 해결 - Training
문제 해결에 Web App Down, Crash Monitoring, Ask Genie를 사용합니다. 이러한 도구를 사용하여 애플리케이션 및 플랫폼 가용성을 모니터링하고, 처리되지 않은 예외를 식별하고, 메모리 덤프 및 호출 스택을 캡처하고, 조사 및 진단 영역을 찾습니다.
Mark Russinovich 및 Andrew Richards 작성
게시일: 2022년 11월 3일
ProcDump 다운로드(714KB)
Linux용 ProcDump 다운로드(GitHub)
Mac용 ProcDump 다운로드(GitHub)
ZoomIt으로 생성
ProcDump는 CPU 스파이크에 대한 애플리케이션을 모니터링하고 관리자 또는 개발자가 스파이크의 원인을 확인하는 데 사용할 수 있는 크래시 덤프를 생성하는 것이 주 목적인 명령줄 유틸리티입니다. ProcDump는 또한 중단된 창 모니터링(Windows 및 작업 관리자가 사용하는 동일한 창 중단 정의 사용), 처리되지 않은 예외 모니터링을 포함하며 시스템 성능 카운터의 값을 기반으로 덤프를 생성할 수 있습니다. 또한 다른 스크립트에 포함할 수 있는 일반 프로세스 덤프 유틸리티 역할을 할 수도 있습니다.
캡처 사용량:
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
ProcDump 다운로드(714KB)
Linux용 ProcDump 다운로드(GitHub)
Mac용 ProcDump 다운로드(GitHub)
다음에서 실행:
학습
모듈
App Service 진단으로 Web App Down 시나리오 문제 해결 - Training
문제 해결에 Web App Down, Crash Monitoring, Ask Genie를 사용합니다. 이러한 도구를 사용하여 애플리케이션 및 플랫폼 가용성을 모니터링하고, 처리되지 않은 예외를 식별하고, 메모리 덤프 및 호출 스택을 캡처하고, 조사 및 진단 영역을 찾습니다.