커널 라이브 덤프 코드 참조

이 섹션에는 발생할 수 있는 일반적인 커널 라이브 덤프 코드에 대한 설명이 포함되어 있습니다. 라이브 덤프는 OS를 다시 설정하지 않지만 운영 체제가 계속될 수 있는 비정상적인 상황에서 메모리 정보를 캡처할 수 있습니다.

참고

이 항목은 프로그래머를 위한 것입니다. 시스템에 버그 검사 코드가 있는 파란색 화면이 표시된 고객인 경우 블루 스크린 오류 문제 해결을 참조하세요.

버그 검사 비교한 커널 라이브 덤프

기존 버그 검사 PC가 다시 설정되고 사용자의 작업이 중단됩니다. 커널 라이브 덤프의 목표는 비정상적인 상황을 촬영하기 위해 데이터를 수집하지만 OS가 작업을 계속할 수 있도록 하는 것입니다. 이렇게 하면 "치명적이지 않은" 오류 및 중단에 대한 버그 검사 비해 가동 중지 시간이 줄어듭니다. 커널 라이브 덤프는 OS를 알려진 양수 상태로 복구할 수 있는 경우에 사용됩니다. 예를 들어 비디오/디스플레이, USB3 또는 Wi-Fi 같은 하위 시스템의 하드웨어 재설정을 통해 해당 시스템이 사용자에게 미치는 영향을 최소화하면서 알려진 양수 상태로 돌아갈 수 있습니다.

커널 라이브 덤프는 커널 메모리의 일관된 스냅샷 만들고 향후 분석을 위해 덤프 파일에 저장합니다. 성능에 미치는 영향을 최소화하기 위해 메모리 복사 기술을 사용하여 단기간에 덤프 파일을 만듭니다. 또한 라이브 덤프 컬렉션이 제한되므로 사용자 영향이 최소화됩니다.

커널 라이브 덤프는 시간이 오래 걸리는 문제 범주에 효과적이지만 기술적으로 실패한 것은 없습니다. 작업이 시작될 때 Watchdog 타이머를 초기화할 수 있습니다. 예상 시간에 와 함께 작업이 완료되기 전에 watchdog가 만료되면 시스템의 라이브 덤프를 사용할 수 있습니다. 그런 다음 해당 작업에 대한 호출 스택 및 관련 대기 체인을 트래버스하여 덤프가 예상 시간 프레임으로 완료되지 않는 이유를 조사하여 덤프를 분석할 수 있습니다.

시스템 로그는 오류가 발생하고 코드 소유자 오류의 원인을 기록하고 원인을 식별할 수 있을 때 잘 작동합니다. Watchdog 타이머를 사용하는 라이브 덤프는 예상 및 기록되지 않은 실패 경로를 catch하려고 시도합니다. 그러나 모든 오류와 마찬가지로 시스템 로그는 오류의 특정 근본 원인에 대한 단서를 제공할 수 있는 다른 문제를 식별할 수 있습니다.

커널 라이브 덤프 파일 콘텐츠

일반 덤프 파일과 마찬가지로 라이브 덤프 파일에는 활성 덤프와 유사한 사용자 모드 메모리가 포함될 수 있는 미니덤프(보조 데이터 포함) 및 전체 커널 덤프가 포함될 수 있습니다. 덤프 파일 콘텐츠에 대한 일반적인 내용은 Kernel-Mode 덤프 파일의 종류를 참조하세요. 일부 라이브 덤프는 특정 하드웨어 관련 데이터를 캡처하도록 설계되므로 미니덤프만 캡처하려고 시도하는 반면, 다른 덤프는 더 큰 커널 라이브 덤프를 캡처하려고 시도할 수 있습니다.

성능, 파일 크기 및 덤프 캡처의 안정성을 위해 스탠드 바이 목록 및 파일 캐시의 페이지와 같은 일부 정보는 포함되지 않습니다.

라이브 덤프 파일에는 일반적으로 다음과 같은 메모리 페이지가 포함됩니다.

  • KdDebuggerBlock
  • 로드된 모듈 목록

각 프로세서에 대해 커널 덤프에서 다음 정보가 캡처됩니다.

  • KiProcessorBlock
  • PRCB
  • 현재 스택
  • 현재 페이지 디렉터리 테이블
  • KI_USER_SHARED_DATA
  • NTOS 커널 이미지
  • HAL 이미지

커널 덤프의 추가 정보는 다음과 같습니다.

  • 스레드/메모리 상태
  • 메모리 내 로깅

일부 라이브 덤프에는 사용자 모드 프로세스 페이지가 포함될 수 있습니다.

USB 오류에 대한 USB 관련 데이터와 같은 추가 도메인별 데이터는 일부 라이브 덤프에 포함될 수 있습니다.

부분 커널 라이브 덤프 파일

라이브 덤프가 의도한 모든 메모리 페이지를 안정적으로 캡처할 수 없는 상황에서 부분 커널 라이브 덤프 파일이 생성될 수 있습니다. 부분 덤프에서 캡처되는 정보는 다른 페이지 앞에 유효한 덤프를 생성하는 데 필요한 중요한 데이터가 포함된 페이지를 캡처하여 필터링되고 우선 순위가 지정됩니다. instance 경우 라이브 덤프에 사용자 페이지가 포함된 경우 커널 페이지가 사용자 페이지보다 우선 순위가 지정됩니다. 일부 상황에서는 원하는 모든 선택적 메모리 페이지를 캡처할 수 있는 리소스가 부족하여 덤프 파일에서 메모리가 누락될 수 있습니다. 덤프 파일은 WinDbg 디버거에서 계속 인식해야 하지만 메모리를 덤프하려고 할 때 오류가 표시될 수 있습니다. 주소에서 메모리를 덤프하려고 할 때 디버거에 오류가 표시되면 !pte 확장을 사용하여 주소의 PTE가 유효한지 여부를 검사 수 있습니다. 이렇게 하면 메모리 주소가 실제로 유효하지 않은지 또는 페이지가 유효하지만 덤프 파일에서 사용할 수 없는지 확인하는 데 도움이 될 수 있습니다.

라이브 덤프 파일 분석

라이브 덤프가 발생하면 다른 메모리 덤프 파일에 사용되는 것과 동일한 기술을 사용하여 덤프 파일을 분석할 수 있습니다. 오류가 발생하는 동안 메모리의 내용을 이해하려면 프로세서 메모리 레지스터 및 어셈블리 프로그래밍에 대한 지식이 필요합니다.

자세한 내용은 다음을 참조하세요.

WinDbg를 사용하여 라이브 덤프 중지 코드 정보 표시

이 항목에 특정 라이브 덤프 코드가 표시되지 않는 경우 Windows 디버거(WinDbg)의 !analyze 확장을 다음 구문(커널 모드)과 함께 사용하고 를 라이브 덤프 코드로 바꿉 <code> 니다.

!analyze -show <code>

이 명령을 입력하면 WinDbg에서 지정된 라이브 덤프 코드에 대한 정보가 표시됩니다. 기본 숫자 기준(radix)이 16이 아닌 경우 접두사는 <code>0x입니다.

!analyze 명령에 라이브 덤프 코드 매개 변수를 제공하여 사용 가능한 매개 변수 정보를 표시합니다. 예를 들어 매개 변수 1 값 이 0x3003 버그 검사 0x144 BUGCODE_USB3_DRIVER 대한 정보를 표시하려면 여기에 표시된 대로 를 사용합니다 !analyze -show 0x144 0x3003 .

0: kd> !analyze -show 0x144 0x3003
BUGCODE_USB3_DRIVER (144)
This bugcheck usually happens when the USB3 core stack detects an invalid
operation being performed by a USB client. This bugcheck may also occur
due to hardware failure on a USB Boot Device.
Arguments:
Arg1: 0000000000003003, USB3_WER_BUGCODE_USBHUB3_DEVICE_ENUMERATION_FAILURE
	A USB device failed enumeration.
Arg2: 0000000000000000, USBHUB3_LIVEDUMP_CONTEXT
Arg3: 0000000000000000, 0
Arg4: 0000000000000000, 0

WinDbg를 다운로드하려면 Windows용 디버깅 도구를 참조하세요. WinDbg 개발 도구에 대한 자세한 내용은 Windows 디버깅을 사용한 시작 참조하세요.

라이브 덤프 파일 위치

기본적으로 라이브 덤프는 'C:\WINDOWS\LiveKernelReports' 디렉터리에 저장됩니다.

전체 덤프: %systemroot%\LiveKernelReports\*.dmp

미니 덤프: %systemroot%\LiveKernelReports\<ComponentName>\*.dmp

디렉터리 구조는 다양한 구성 요소에 대한 라이브 덤프를 저장하는 데 사용됩니다.

NDIS
PDCRevocation
PoW32kWatchdog
USBHUB3
WATCHDOG

라이브 덤프 레지스트리 키

시스템 생성 라이브 커널 보고서의 구성 옵션에 대한 자세한 내용은 WER 설정을 참조하세요.

PowerShell을 사용하여 라이브 덤프를 수동으로 트리거

  1. 및 관리자 PowerShell 프롬프트를 엽니다.

  2. Get-StorageSubSystem PowerShell 명령을 사용하여 StorageSubsystem 식별 이름을 가져옵니다.

 C:\> Get-StorageSubSystem
 FriendlyName                     HealthStatus OperationalStatus
 ------------                     ------------ -----------------
 Windows Storage on 10-2411-PC    Healthy      OK
  1. Get-StorageDiagnosticInfo 사용하여 위의 하위 시스템에 대한 라이브 덤프를 생성합니다(다른 진단 로그와 함께). 자세한 내용은 Get-StorageDiagnosticInfo를 참조하세요.
 C:\> Get-StorageDiagnosticInfo -StorageSubSystemFriendlyName "Windows Storage on 10-2411-PC" -IncludeLiveDump -DestinationPath C:\destinationfolder
  1. 출력은 요청된 정보가 생성되고 있음을 나타냅니다.
Gathering storage subsystem diagnostic information                                                                         
Running                                                                                                                 
[oooooooooooo                                                                                              ] 
  1. 덤프는 내에 [DestinationPath]\localhost있습니다.
 C:\> dir C:\destinationfolder\localhost\*.dmp
   Directory: C:\destinationfolder\localhost
 Mode                LastWriteTime         Length Name
 ----                -------------         ------ ----
 -a----         5/5/2016   1:08 PM      867135488 LiveDump.dmp
  1. 디버거를 사용하여 덤프 파일에서 !analyze 를 실행하면 이것이 LIVE_SYSTEM_DUMP(161)의 라이브 덤프 코드임을 나타냅니다.

커널 라이브 덤프 코드

다음 표에서는 커널 라이브 덤프 코드에 대한 링크를 제공합니다.

코드 이름
0x000000AB SESSION_HAS_VALID_POOL_ON_EXIT
0x00000117 VIDEO_TDR_TIMEOUT_DETECTED
0x00000141 VIDEO_ENGINE_TIMEOUT_DETECTED
0x00000142 VIDEO_TDR_APPLICATION_BLOCKED
0x00000156 WINSOCK_DETECTED_HUNG_CLOSESOCKET_LIVEDUMP
0x0000015C PDC_WATCHDOG_TIMEOUT_LIVEDUMP
0x0000015D SOC_SUBSYSTEM_FAILURE_LIVEDUMP
0x0000015E BUGCODE_NDIS_DRIVER_LIVE_DUMP
0x0000015F CONNECTED_STANDBY_WATCHDOG_TIMEOUT_LIVEDUMP
0x00000161 LIVE_SYSTEM_DUMP
0x00000165 CLUSTER_CSV_STATUS_IO_TIMEOUT_LIVEDUMP
0x00000166 CLUSTER_RESOURCE_CALL_TIMEOUT_LIVEDUMP
0x00000167 CLUSTER_CSV_SNAPSHOT_DEVICE_INFO_TIMEOUT_LIVEDUMP
0x00000168 CLUSTER_CSV_STATE_TRANSITION_TIMEOUT_LIVEDUMP
0x00000169 CLUSTER_CSV_VOLUME_ARRIVAL_LIVEDUMP
0x0000016A CLUSTER_CSV_VOLUME_REMOVAL_LIVEDUMP
0x0000016B CLUSTER_CSV_CLUSTER_WATCHDOG_LIVEDUMP
0x0000016F CLUSTER_CSV_STATE_TRANSITION_INTERVAL_TIMEOUT_LIVEDUMP
0x00000175 PREVIOUS_FATAL_ABNORMAL_RESET_ERROR
0x00000179 CLUSTER_CLUSPORT_STATUS_IO_TIMEOUT_LIVEDUMP
0x0000017C PDC_LOCK_WATCHDOG_LIVEDUMP
0x0000017D PDC_UNEXPECTED_REVOCATION_LIVEDUMP
0x00000187 VIDEO_DWMINIT_TIMEOUT_FALLBACK_BDD
0x00000188 CLUSTER_CSVFS_LIVEDUMP
0x00000190 WIN32K_CRITICAL_FAILURE_LIVEDUMP
0x00000193 VIDEO_DXGKRNL_LIVEDUMP
0x00000195 SMB_SERVER_LIVEDUMP
0x00000198 UFX_LIVEDUMP
0x0000019D CLUSTER_SVHDX_LIVEDUMP
0x000001A1 WIN32K_CALLOUT_WATCHDOG_LIVEDUMP
0x000001A3 CALL_HAS_NOT_RETURNED_WATCHDOG_TIMEOUT_LIVEDUMP
0x000001A4 DRIPS_SW_HW_DIVERGENCE_LIVEDUMP
0x000001A5 USB_DRIPS_BLOCKER_SURPRISE_REMOVAL_LIVEDUMP
0x000001A6 BLUETOOTH_ERROR_RECOVERY_LIVEDUMP
0x000001A7 SMB_REDIRECTOR_LIVEDUMP
0x000001A8 VIDEO_DXGKRNL_BLACK_SCREEN_LIVEDUMP
0x000001A9 DIRECTED_FX_TRANSITION_LIVEDUMP
0x000001B0 VIDEO_MINIPORT_FAILED_LIVEDUMP
0x000001B8 VIDEO_MINIPORT_BLACK_SCREEN_LIVEDUMP
0x000001C4 DRIVER_VERIFIER_DETECTED_VIOLATION_LIVEDUMP
0x000001C5 IO_THREADPOOL_DEADLOCK_LIVEDUMP
0x000001C9 USER_MODE_HEALTH_MONITOR_LIVEDUMP
0x000001CC EXRESOURCE_TIMEOUT_LIVEDUMP
0x000001D1 TELEMETRY_ASSERTS_LIVEDUMP
0x000001D4 UCMUCSI_LIVEDUMP
0x000001E1 DEVICE_DIAGNOSTIC_LOG_LIVEDUMP
0x000001F5 APPLICATION_HANG_KERNEL_LIVEDUMP
0x000021C8 MANUALLY_INITIATED_BLACKSCREEN_HOTKEY_LIVE_DUMP

이러한 중지 코드는 라이브 덤프 또는 디바이스 검사 버그에 사용할 수 있습니다.

코드 이름
0x00000124 WHEA_UNCORRECTABLE_ERROR
0x00000144 BUGCODE_USB3_DRIVER
0x00000164 WIN32K_CRITICAL_FAILURE

추가 정보

오류 검사 코드 참조

!분석

블루 스크린에 대한 일반적인 팁

블루 스크린 데이터