시스템 문제를 해결할 때 시스템 상태를 분석하기 위해 크래시 덤프 파일을 생성해야 할 수 있습니다. 특정 키 조합을 사용하여 키보드에서 직접 시스템 크래시가 발생하도록 할 수 있습니다. 이 기능은 시스템이 응답하지 않거나 진단 정보를 캡처해야 하는 경우에 유용합니다.
이 문서에서는 다음 방법을 설명합니다.
- 키보드를 통해 크래시를 시작하도록 레지스트리 설정 구성
- 키보드 단축키를 사용하여 시스템을 충돌시키기
- 대체 바로 가기 키 설정
이 기능은 PS/2 키보드(Windows 2000 이상), USB 키보드(Windows Vista 이상) 및 Hyper-V 키보드(Windows 10 버전 1903 이상)에서 작동합니다.
주의
시스템 충돌을 강제로 발생시키면 시스템이 즉시 멈추고 데이터 손실이 발생할 수 있습니다. 디버깅을 위해 필요한 경우에만 이 기능을 사용하고 작업을 저장해야 합니다.
구성
키보드를 사용하여 시스템 작동 중단을 사용하도록 다음 설정을 구성합니다.
크래시 덤프 파일을 쓰려면 이러한 덤프 파일을 사용하도록 설정해야 합니다. 경로 및 파일 이름을 선택하고 덤프 파일의 크기를 선택합니다. 자세한 내용은 커널 모드 덤프 파일 사용 설정을 참조 하세요.
PS/2 키보드의 경우: 레지스트리에서 키보드 시작 크래시 사용:
-
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\i8042prt\Parameters로 이동하세요. - 명명된 값 만들기
CrashOnCtrlScroll -
REG_DWORD을0x01값으로 지정하십시오.
-
USB 키보드를 사용하려면 레지스트리에서 키보드로 인한 충돌을 활성화해야 합니다.
- 레지스트리 키
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\kbdhid\Parameters에서 명명된 값을 만듭니다.CrashOnCtrlScroll - 0x01의 값으로
REG_DWORD을 설정합니다.
- 레지스트리 키
Hyper-V 키보드를 사용하면 레지스트리에서 키보드를 사용한 충돌 유발 기능을 활성화해야 합니다.
- 레지스트리 키
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\hyperkbd\Parameters에서 명명된 값을 만듭니다.CrashOnCtrlScroll -
REG_DWORD값을 0x01로 설정합니다.
- 레지스트리 키
일부 노트북은 기본 제공 키보드에 PS/2 드라이버를 사용하고 외부 HID 키보드도 지원합니다. 이러한 시스템의 경우 두 키보드 중 하나를 사용할 수 있도록 USB 및 PS/2 레지스트리 키를 모두 만드는 것이 좋습니다.
이러한 설정을 적용하려면 시스템을 다시 시작해야 합니다.
다시 시작이 완료된 후, 다음 바로 가기 키 시퀀스를 사용하여 키보드 충돌을 시작할 수 있습니다. 가장 오른쪽 CTRL 키를 누른 채 SCROLL LOCK 키를 두 번 누릅니다.
그런 다음 시스템은 KeBugCheck를 호출하고 버그 확인 0xE2: MANUALLY_INITIATED_CRASH를 발생시킵니다. 크래시 덤프를 사용하지 않도록 설정하지 않으면 크래시 덤프 파일이 기록됩니다.
커널 디버거가 크래시된 컴퓨터에 연결된 경우 크래시 덤프 파일이 기록된 후 컴퓨터가 커널 디버거에 침입합니다.
키보드에서 시스템 작동 중단을 강제 적용하기 위한 대체 바로 가기 키 정의
다음 레지스트리 하위 키에서 바로 가기 키 시퀀스에 대한 대체 값을 구성하여 메모리 덤프 파일을 생성할 수 있습니다.
PS/2 키보드의 경우:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\crashdumpUSB 키보드의 경우:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\kbdhid\crashdumpHyper-V 키보드의 경우:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\hyperkbd\crashdump
다음 하위 키 아래에 다음 레지스트리 값을 만들어야 합니다.
Dump1Keys
레지스트리 값은 사용할 첫 번째 단축키의 비트 맵입니다. 예를 들어 가장 오른쪽 Ctrl 키를 사용하여 바로 가기 키 시퀀스를 시작하는 대신 첫 번째 바로 가기 키를 가장 왼쪽 SHIFT 키로 설정할 수 있습니다.
다음 표에서는 첫 번째 핫 키의 16진수 값을 설명합니다.
| 값 | 바로 가기 키 시퀀스에 사용되는 첫 번째 키 |
|---|---|
| 0x01 | 맨 오른쪽 시프트 키 |
| 0x02 | 맨 오른쪽 CTRL 키 |
| 0x04 | 맨 오른쪽 ALT 키 |
| 0x10 | 가장 왼쪽 시프트 키 |
| 0x20 | 맨 왼쪽 CTRL 키 |
| 0x40 | 맨 왼쪽 ALT 키 |
하나 이상의 키를 바로 가기 키 시퀀스에 사용되는 첫 번째 키로 사용하도록 설정하는 값을 할당 Dump1Keys 할 수 있습니다. 예를 들어, Dump1Keys에 0x11 값을 할당하여 바로 가기 키 시퀀스의 첫 번째 키로 오른쪽 끝과 왼쪽 끝의 SHIFT 키를 모두 정의합니다.
Dump2Key
Dump2Key 레지스트리 값은 대상 컴퓨터의 키보드 레이아웃에 대한 스캔 코드 테이블의 인덱스입니다. 드라이버의 실제 테이블을 참조하세요.
const UCHAR keyToScanTbl[134] = {
0x00,0x29,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,
0x0A,0x0B,0x0C,0x0D,0x7D,0x0E,0x0F,0x10,0x11,0x12,
0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x00,
0x3A,0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,
0x27,0x28,0x2B,0x1C,0x2A,0x00,0x2C,0x2D,0x2E,0x2F,
0x30,0x31,0x32,0x33,0x34,0x35,0x73,0x36,0x1D,0x00,
0x38,0x39,0xB8,0x00,0x9D,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0xD2,0xD3,0x00,0x00,0xCB,
0xC7,0xCF,0x00,0xC8,0xD0,0xC9,0xD1,0x00,0x00,0xCD,
0x45,0x47,0x4B,0x4F,0x00,0xB5,0x48,0x4C,0x50,0x52,
0x37,0x49,0x4D,0x51,0x53,0x4A,0x4E,0x00,0x9C,0x00,
0x01,0x00,0x3B,0x3C,0x3D,0x3E,0x3F,0x40,0x41,0x42,
0x43,0x44,0x57,0x58,0x00,0x46,0x00,0x00,0x00,0x00,
0x00,0x7B,0x79,0x70 };
인덱스 124(sysreq)는 84키 키보드에 다른 스캔 코드가 있기 때문에 특별한 경우입니다.
USB 또는 PS/2 키보드에서 시스템 크래시가 강제로 발생하도록 대체 바로 가기 키를 정의하는 경우, CrashOnCtrlScroll 레지스트리 값을 0으로 설정하거나 레지스트리에서 제거해야 합니다.
Example
이 시나리오에서는 랩톱에서 PS2 키보드 드라이버를 사용하고 외부 HID 키보드가 연결됩니다. 두 값을 모두 설정하면 두 키보드에서 수동 시스템 충돌을 트리거할 수 있습니다. 가장 오른쪽 제어 키를 누르고 다음 레지스트리 키를 설정할 때 스페이스바를 두 번 눌러 수동 시스템 충돌을 강제로 수행할 수 있습니다.
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\crashdump]
"Dump1Keys"=dword:00000002
"Dump2Key"=dword:0000003d
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\kbdhid\crashdump]
"Dump1Keys"=dword:00000002
"Dump2Key"=dword:0000003d
제한 사항
바로 가기 키 시퀀스가 작동하지 않는 방식으로 시스템이 동결되는 것은 가능하지만 드문 일입니다. 키보드 바로 가기 시퀀스를 사용하여 크래시를 시작하면 Ctrl+Alt+DELETE가 작동하지 않는 많은 경우에도 작동합니다.
컴퓨터가 높은 인터럽트 요청 수준(IRQL)에서 응답을 중지하는 경우 키보드에서 시스템 크래시가 강제로 유발되지 않습니다. 이 제한 사항은 메모리 덤프 프로세스를 실행할 수 있는 Kbdhid.sys 드라이버가 i8042prt.sys 드라이버보다 낮은 IRQL에서 작동하기 때문입니다.
참조
버그 검사 0xE2: MANUALLY_INITIATED_CRASH
WinDbg를 사용하여 커널 모드 덤프 파일을 분석하기
커널 모드 덤프 파일의 종류입니다.