다음을 통해 공유


예제 15: 개체 참조 추적 사용

개체 참조 추적은 개체를 참조하거나 역참조할 때 순차적 스택 추적을 기록하는 Windows 기능입니다. 충돌 또는 메모리 누수로 이어질 수 있는 개체 처리 오류를 감지하도록 설계되었습니다. 이러한 오류 중 일부는 일관되게 표시되지 않으므로 검색하기 어렵습니다. 자세한 내용은 개체 참조 추적을 참조 하세요.

전역 플래그 대화 상자 또는 명령 프롬프트를 사용하여 개체 참조 추적을 구성할 수 있습니다. 다음 예제에서는 명령 프롬프트를 사용합니다. 전역 플래그 대화 상자를 사용하여 개체 참조 추적을 구성하는 방법에 대한 자세한 내용은 개체 참조 추적 구성을 참조하세요.

Gflags를 사용하여 개체 참조 추적을 활성화, 비활성화 및 구성할 수 있습니다. 프로세스는 다음과 같습니다.

  • Gflags를 사용하여 레지스트리에서 또는 커널 플래그(런타임) 설정으로 개체 참조 추적 을 사용하도록 설정합니다. 레지스트리에 설정을 추가하는 경우 추적을 시작하려면 컴퓨터를 다시 시작해야 합니다. 설정의 런타임 버전을 사용하도록 설정하면 추적이 즉시 시작되지만 컴퓨터를 종료하거나 다시 시작할 때 추적 설정이 레지스트리 키의 설정으로 되돌아갑니다.

  • Suspect 개체를 만드는 프로세스를 시작합니다. 추적에는 추적이 시작된 후에 시작되는 프로세스에서 만든 개체만 포함됩니다. 프로세스가 다시 시작하는 동안 또는 다시 시작한 후 곧 시작되는 경우 레지스트리에 추적 설정을 추가한 다음 시스템을 다시 시작합니다.

  • !obtrace 디버거 확장을 사용하여 추적을 봅니다. 기본적으로 추적은 개체가 제거될 때까지 유지 관리되지만 추적을 사용하지 않도록 설정할 때까지 /p 매개 변수를 사용하여 추적을 유지할 수 있습니다.

  • Gflags를 사용하여 레지스트리 또는 커널 플래그(런타임) 설정으로 개체 참조 추적을 사용하지 않도록 설정합니다. 레지스트리에서 설정을 삭제하는 경우 추적을 종료하려면 컴퓨터를 다시 시작해야 합니다. 설정의 런타임 버전을 사용하지 않도록 설정하면 추적이 즉시 종료되지만 컴퓨터를 종료하거나 다시 시작할 때 추적 설정이 레지스트리의 설정으로 되돌아갑니다.

다음 예제에서는 Gflags를 사용하여 개체 참조 추적을 사용하거나 사용하지 않도록 설정하는 방법을 보여 줍니다. \

런타임 추적 사용

다음 명령은 명령 프롬프트에서 개체 참조 추적을 사용하도록 설정합니다. 이 명령은 /ko 매개 변수를 사용하여 개체 참조 추적을 커널 플래그(런타임) 설정으로 사용하도록 설정합니다. 이 명령은 /t 매개 변수를 사용하여 풀 태그 Tag1Fred를 지정합니다. 따라서 Tag1 또는 Fred를 사용하여 만든 모든 개체가 추적됩니다.

gflags /ko /t Tag1;Fred

이 명령은 커널 플래그(런타임) 설정을 변경하므로 개체 참조 추적이 즉시 시작됩니다. 추적에는 명령이 제출된 후 시작되는 프로세스에서 만든 풀 태그 Tag1 또는 Fred 가 있는 모든 개체가 포함됩니다.

Gflags는 다음 메시지를 인쇄하여 응답합니다.

Running Kernel Settings :
Object Ref Tracing Enabled
        Temporary Traces
        Pool Tags: Tag1;Fred
        Process Name: All Processes

이 메시지는 개체 참조 추적이 사용하도록 설정되어 있음을 나타냅니다. "임시 추적"은 개체가 제거될 때 추적의 모든 레코드가 삭제됨을 나타냅니다. 추적을 "영구적"으로 만들려면 /p 매개 변수를 사용합니다. 이 매개 변수는 개체 참조 추적을 사용하지 않도록 설정하거나 컴퓨터를 종료하거나 다시 시작할 때까지 Windows에서 추적 데이터를 유지하도록 지시합니다.

레지스트리에서 추적 사용

다음 명령은 레지스트리에 개체 참조 추적 구성을 추가합니다. 구성한 추적은 컴퓨터를 다시 시작할 때 시작됩니다.

이 명령은 /ro 매개 변수를 사용하여 개체 참조 추적을 레지스트리 설정으로 사용하도록 설정합니다. 이 명령은 /i를 사용하여 notepad.exe 프로세스를 지정하고 /t 매개 변수를 사용하여 풀 태그 Tag1Fred를 지정합니다. 따라서 Tag1 또는 Fred 풀 태그를 사용하여 메모장 프로세스에서 만든 모든 개체가 추적됩니다. 이 명령은 추적을 사용하지 않도록 설정할 때까지 추적 데이터를 유지하는 /p 매개 변수도 사용합니다.

gflags /ro /t Tag1;Fred /i Notepad.exe /p

명령을 제출하면 Gflags는 레지스트리에 정보를 저장합니다. 그러나 컴퓨터를 다시 시작할 때까지 레지스트리 설정이 유효하지 않으므로 이 개체 참조 추적이 구성되었지만 아직 시작되지 않았습니다.

Gflags는 다음 메시지를 인쇄하여 응답합니다.

Boot Registry Settings :
Object Ref Tracing Enabled
        Permanent Traces
        Pool Tags: Tag1;Fred
        Process Name: Notepad.exe

이 메시지는 레지스트리에서 개체 참조 추적을 사용하도록 설정되어 있음을 나타냅니다. "영구 추적"은 컴퓨터를 종료하거나 다시 시작할 때까지 추적 데이터가 유지됨을 나타냅니다. 또한 추적할 풀 태그 및 이미지 파일 이름도 나열됩니다.

개체 참조 추적 구성 표시

현재 유효하거나 컴퓨터를 다시 시작할 때 사용할 레지스트리에 저장된 개체 참조 추적 구성을 표시할 수 있습니다.

이 예제에는 레지스트리에 하나의 개체 참조 추적 구성이 저장되고 다른 구성은 런타임에 구성됩니다. 런타임 추적은 즉시 시작되며 레지스트리 설정을 재정의합니다. 그러나 시스템을 다시 시작하면 런타임 설정이 손실되고 개체 참조 추적 세션 레지스트리 설정이 적용됩니다.

다음 명령은 런타임 개체 참조 추적 구성을 표시합니다. 다른 매개 변수 없이 /ko 매개 변수를 사용합니다.

gflags /ko
Running Kernel Settings :
Object Ref Tracing Enabled
        Temporary Traces
        Pool Tags: Tag1;Fred
        Process Name: All Processes

이 예제에서와 같이 개체 참조 추적을 사용하는 경우 표시되는 설정은 진행 중인 추적을 설명합니다.

다음 명령은 레지스트리에 저장된 개체 참조 추적 구성 데이터를 표시합니다. 다른 매개 변수 없이 /ro 매개 변수를 사용합니다.

gflags /ro

이에 대한 응답으로 Gflags는 레지스트리에 저장된 데이터를 표시합니다.

Boot Registry Settings :
Object Ref Tracing Enabled
        Permanent Traces
        Pool Tags: Tag1;Fred
        Process Name: Notepad.exe

레지스트리에 개체 참조 추적 구성을 추가한 이후 컴퓨터를 다시 시작한 경우 gflags /ro 명령에 대한 응답으로 표시되는 설정은 진행 중인 추적을 설명합니다. 그러나 아직 다시 시작하지 않았거나 다시 시작했지만 런타임 개체 참조 추적(/ko)을 시작한 경우 레지스트리에 저장된 설정은 현재 유효하지 않지만 시스템을 다시 부팅하면 다시 적용됩니다.

개체 참조 추적 사용 안 함

런타임(커널 플래그) 개체 참조 추적 설정을 사용하지 않도록 설정하면 추적이 즉시 중지됩니다. 레지스트리에서 개체 참조 추적 설정을 사용하지 않도록 설정하면 컴퓨터를 다시 시작하면 추적이 중지됩니다.

다음 명령은 런타임 개체 참조 추적을 사용하지 않도록 설정합니다. /d 매개 변수를 사용하여 모든 설정을 사용하지 않도록 설정합니다. 설정을 선택적으로 사용하지 않도록 설정할 수 없습니다.

gflags /ko -d

명령이 성공하면 Gflags는 다음 메시지와 함께 응답합니다.

Running Kernel Settings :
Object Ref Tracing Disabled

다음 명령은 런타임 개체 참조 추적을 사용하지 않도록 설정합니다.

다음 명령은 레지스트리에서 개체 참조 추적 설정을 사용하지 않도록 설정합니다. /d 매개 변수를 사용하여 모든 설정을 사용하지 않도록 설정합니다. 설정을 선택적으로 사용하지 않도록 설정할 수 없습니다. 이 명령은 컴퓨터를 다시 시작할 때 적용됩니다.

gflags /ro -d

명령이 성공하면 Gflags는 다음 메시지와 함께 응답합니다.

Boot Registry Settings :
Object Ref Tracing Disabled