Share via


자동 디버깅 구성

사용자는 자동 디버깅을 구성하여 시스템 또는 애플리케이션이 응답을 중지한 이유를 확인할 수 있습니다.

시스템 크래시 자동 디버깅 구성

시스템이 응답을 중지할 때 크래시 덤프 파일을 생성하도록 대상 컴퓨터를 구성하려면 제어판에서 시스템 애플리케이션을 사용합니다. 고급 시스템 설정을 클릭해 시스템 속성 대화 상자를 엽니다. 해당 상자의 고급 탭에서 시작 및 복구 아래의 설정을 클릭한 다음 적절한 복구 옵션을 사용합니다. 또는 다음 레지스트리 키를 사용하여 크래시 덤프 옵션을 구성할 수 있습니다.

Hkey_local_machine\시스템\CurrentControlSet\컨트롤\CrashControl

지정할 수 있는 파일은 크래시 덤프 파일입니다. 기본 이름은 Memory.dmp입니다. WinDbg 또는 KD와 같은 커널 모드 디버거를 사용하여 크래시 덤프를 디버그할 수 있습니다. 자세한 내용은 디버거에 포함된 문서를 참조하세요.

애플리케이션 크래시 자동 디버깅 구성

애플리케이션이 응답을 중지하면(예: 액세스 위반 후) 시스템은 사후 관리 디버깅을 위해 레지스트리에 지정된 디버거를 자동으로 호출합니다. 명령줄이 올바르게 구성된 경우 프로세스 ID 및 이벤트 핸들이 디버거에 전달됩니다. 다음 절차에서는 레지스트리에서 디버거를 지정하는 방법을 설명합니다.

디버거를 사후 관리 디버거로 설정하려면

  1. 다음 레지스트리 키로 이동합니다.

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug

  2. 디버거를 위한 명령줄을 나타내는 REG_SZ 문자열을 사용하여 디버거 값을 추가하거나 편집합니다.

    문자열에는 디버거 실행 파일에 대한 완전히 정규화된 경로가 포함되어야 합니다. "%ld" 매개 변수를 사용해 이러한 프로세스 ID 및 이벤트 핸들을 디버거 명령줄에 표시합니다. 다른 디버거에는 이러한 값을 나타내는 고유한 매개 변수 구문이 있을 수 있습니다. 디버거를 호출하면 첫 번째 "%ld"가 프로세스 ID로 대체되고 두 번째 "%ld"가 이벤트 핸들로 대체됩니다.

    다음 텍스트는 WinDbg를 디버거로 설정하는 방법의 예입니다.

    "C:\debuggers\windbg.exe" -p %ld -e %ld -g
    
  3. 사용자 상호 작용 없이 디버거를 호출하려면 디버거를 호출하기 전에 시스템이 사용자에게 대화 상자를 표시해야 하는지 여부를 지정하는 REG_SZ 문자열을 사용하여 자동 값을 추가하거나 편집합니다. 문자열 "1"은 대화 상자를 사용하지 않도록 설정합니다. 문자열 "0"은 대화 상자를 사용하도록 설정합니다.

자동 디버깅에서 애플리케이션 제외

다음 절차에서는 AeDebug 키 아래의 자동 값이 1로 설정된 후 자동 디버깅에서 애플리케이션을 제외하는 방법을 설명합니다.

자동 디버깅에서 애플리케이션을 제외하려면

  1. 다음 레지스트리 키로 이동합니다.

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug

  2. AutoExclusionList 하위 키에 REG_DWORD 값을 추가합니다. 여기서 이름은 실행 파일의 이름이고 값은 1입니다. 기본적으로 데스크톱 창 관리자(Dwm.exe)는 자동 디버깅에서 제외됩니다. 그렇지 않으면 Dwm.exe가 응답을 중지할 경우 시스템 교착 상태가 발생할 수 있기 때문입니다(Dwm.exe가 응답하지 않고 디버거에 의해 유지되기 때문에 종료할 수 없으므로 사용자가 디버거에 의해 표시되는 인터페이스를 볼 수 없음).

    Windows Server 2003 및 Windows XP:AutoExclusionList 하위 키를 사용할 수 없습니다. 따라서 Dwm.exe를 포함한 모든 애플리케이션을 자동 디버깅에서 제외할 수 없습니다.

기본 AeDebug 레지스트리 항목은 다음과 같이 나타낼 수 있습니다.

HKEY_LOCAL_MACHINE
   SOFTWARE
      Microsoft
         Windows NT
            CurrentVersion
               AeDebug
                  Auto = 1
                  AutoExclusionList
                     DWM.exe = 1

WinDbg를 사용하여 사후 관리 디버깅 사용