로컬 Kernel-Mode 디버깅

Windows용 디버깅 도구는 로컬 커널 디버깅을 지원합니다. 단일 컴퓨터에서 커널 모드 디버깅입니다. 즉, 디버거는 디버그 중인 동일한 컴퓨터에서 실행됩니다.

로컬 Kernel-Mode 디버깅 설정

로컬 커널 모드 디버깅 설정에 대한 자세한 내용은 단일 컴퓨터의 로컬 Kernel-Mode 디버깅 수동 설정을 참조하세요.

디버깅 세션 시작

WinDbg 사용

관리자 권한으로 WinDbg를 엽니다. 파일 메뉴에서 커널 디버그를 선택합니다. 커널 디버깅 대화 상자에서 로컬 탭을 엽니다. 확인을 선택합니다.

관리자 권한으로 명령 프롬프트 창을 열고 다음 명령을 입력하여 WinDbg로 세션을 시작할 수도 있습니다.

windbg -kl

KD 사용

관리자 권한으로 명령 프롬프트 창을 열고 다음 명령을 입력합니다.

kd -kl

사용할 수 없는 명령

로컬 커널 디버깅 세션에서 모든 명령을 사용할 수 있는 것은 아닙니다. 일반적으로 작업을 다시 시작할 수 없으므로 대상 컴퓨터가 일시적으로 중지되도록 하는 명령을 사용할 수 없습니다.

특히 다음 명령을 사용할 수 없습니다.

  • 실행 명령(예: g (Go), p (Step), t (Trace), wt (Trace and Watch Data), tb (Trace to Next Branch), gh (Go with Exception Handled), gn (Go with Exception Not Handled)

  • .crash, .dump 및 .reboot와 같은 파일 종료 및 덤프 명령

  • 중단점 명령(예: bp, bu, ba, bc, bd, bebl)

  • r 및 변형과 같은 표시 명령 등록

  • 스택 추적 명령(예: k 및 변형)

WinDbg를 사용하여 로컬 커널 디버깅을 수행하는 경우 해당하는 모든 메뉴 명령과 단추를 사용할 수 없습니다.

사용할 수 있는 명령

모든 메모리 입력 및 출력 명령을 사용할 수 있습니다. 사용자 메모리 및 커널 메모리에서 자유롭게 읽을 수 있습니다. 메모리에 쓸 수도 있습니다. 커널 메모리가 데이터 구조를 손상시킬 수 있고 컴퓨터가 응답을 중지하는 경우가 자주 있기 때문에 커널 메모리의 잘못된 부분에 쓰지 않아야 합니다(즉, 크래시).

로컬 커널 디버깅 수행의 어려움

로컬 커널 디버깅은 매우 섬세한 작업입니다. 시스템을 손상하거나 충돌하지 않도록 주의하세요.

로컬 커널 디버깅의 가장 어려운 측면 중 하나는 컴퓨터 상태가 지속적으로 변경된다는 것입니다. 메모리는 페이징 및 출력되고, 활성 프로세스는 지속적으로 변경되며, 가상 주소 컨텍스트는 일정하게 유지되지 않습니다. 그러나 이러한 조건에서는 특정 디바이스 상태와 같이 느리게 변경되는 항목을 효과적으로 분석할 수 있습니다.

커널 모드 드라이버와 Windows 운영 체제는 DbgPrint 및 관련 함수를 사용하여 커널 디버거에 메시지를 자주 보냅니다. 이러한 메시지는 로컬 커널 디버깅 중에 자동으로 표시되지 않습니다. !dbgprint 확장을 사용하여 표시할 수 있습니다.

LiveKD

LiveKD 도구는 로컬 커널 디버깅을 시뮬레이션합니다. 이 도구는 이 스냅샷 만드는 동안 커널을 실제로 중지하지 않고 커널 메모리의 "스냅샷" 덤프 파일을 만듭니다. 따라서 스냅샷 실제로 컴퓨터의 단일 인스턴트 상태를 표시하지 않을 수 있습니다.

LiveKD는 Windows용 디버깅 도구 패키지의 일부가 아닙니다. Windows Sysinternals 사이트에서 LiveKd 를 다운로드할 수 있습니다.