다음을 통해 공유


CDebugReportHook 클래스

이 클래스를 사용하여 명명된 파이프에 디버그 보고서를 보냅니다.

구문

class CDebugReportHook

멤버

공용 생성자

속성 설명
CDebugReportHook::CDebugReportHook SetPipeName, SetTimeoutSetHook을 호출합니다.
CDebugReportHook::~CDebugReportHook CDebugReportHook::RemoveHook를 호출합니다.

공용 메서드

이름 설명
CDebugReportHook::CDebugReportHookProc (정적) C 런타임 디버그 보고 프로세스에 연결된 사용자 지정 보고 함수입니다.
CDebugReportHook::RemoveHook 이 메서드를 호출하여 명명된 파이프로 디버그 보고서 전송을 중지하고 이전 보고서 후크를 복원합니다.
CDebugReportHook::SetHook 이 메서드를 호출하여 명명된 파이프에 디버그 보고서 보내기를 시작합니다.
CDebugReportHook::SetPipeName 이 메서드를 호출하여 디버그 보고서를 보낼 파이프의 컴퓨터 및 이름을 설정합니다.
CDebugReportHook::SetTimeout 이 메서드를 호출하여 이 클래스가 명명된 파이프를 사용할 수 있을 때까지 대기하는 시간을 밀리초 단위로 설정합니다.

설명

서비스 또는 애플리케이션의 디버그 빌드에서 이 클래스의 인스턴스를 만들어 명명된 파이프에 디버그 보고서를 보냅니다. 디버그 보고서는 _CrtDbgReport 호출하거나 ATLTRACE 및 ATLASSERT 매크로와 같은 이 함수에 대한 래퍼를 사용하여 생성됩니다.

이 클래스를 사용하면 비대화형 창 스테이션에서 실행되는 구성 요소를 대화형으로 디버그할 수 있습니다.

디버그 보고서는 스레드의 기본 보안 컨텍스트를 사용하여 전송됩니다. 웹 애플리케이션과 같이 낮은 권한 사용자의 가장이 발생하는 상황에서 디버그 보고서를 볼 수 있도록 일시적으로 가장을 사용하지 않도록 설정됩니다.

요구 사항

헤더: atlutil.h

CDebugReportHook::CDebugReportHook

SetPipeName, SetTimeoutSetHook을 호출합니다.

CDebugReportHook(
    LPCSTR szMachineName = ".",
    LPCSTR szPipeName = "AtlsDbgPipe",
    DWORD dwTimeout = 20000) throw();

매개 변수

szMachineName
디버그 출력을 보내야 하는 컴퓨터의 이름입니다. 기본값은 로컬 컴퓨터입니다.

szPipeName
디버그 출력을 보내야 하는 명명된 파이프의 이름입니다.

dwTimeout
이 클래스가 명명된 파이프를 사용할 수 있을 때까지 기다리는 시간(밀리초)입니다.

CDebugReportHook::~CDebugReportHook

CDebugReportHook::RemoveHook를 호출합니다.

~CDebugReportHook() throw();

CDebugReportHook::CDebugReportHookProc

C 런타임 디버그 보고 프로세스에 연결된 사용자 지정 보고 함수입니다.

static int __cdecl CDebugReportHookProc(
    int reportType,
    char* message,
    int* returnValue) throw();

매개 변수

reportType
보고서의 형식(_CRT_WARN, _CRT_ERROR 또는 _CRT_ASSERT)입니다.

message
메시지 문자열입니다.

returnValue
_CrtDbgReport 반환해야 하는 값입니다.

Return Value

후크가 문제의 메시지를 완전히 처리하여 추가 보고가 필요하지 않은 경우 FALSE를 반환합니다. 일반적인 방법으로 메시지를 보고해야 하는 경우 _CrtDbgReport TRUE를 반환합니다.

설명

보고 함수는 명명된 파이프를 열고 다른 쪽 끝에 있는 프로세스와 통신하려고 시도합니다. 파이프가 사용 중인 경우 보고 함수는 파이프가 해제되거나 시간 제한이 만료될 때까지 대기합니다. 시간 제한은 생성자 또는 CDebugReportHook::SetTimeout에 대한 호출을 통해 설정할 수 있습니다.

이 함수의 코드는 호출 스레드의 기본 보안 컨텍스트에서 실행됩니다. 즉, 이 함수의 기간 동안 가장을 사용할 수 없습니다.

CDebugReportHook::RemoveHook

이 메서드를 호출하여 명명된 파이프로 디버그 보고서 전송을 중지하고 이전 보고서 후크를 복원합니다.

void RemoveHook() throw();

설명

_CrtSetReportHook2 호출하여 이전 보고서 후크를 복원합니다.

CDebugReportHook::SetHook

이 메서드를 호출하여 명명된 파이프에 디버그 보고서 보내기를 시작합니다.

void SetHook() throw();

설명

_CrtSetReportHook2 호출하여 CDebugReportHookProc를 통해 명명된 파이프로 디버그 보고서를 라우팅합니다. 이 클래스는 RemoveHook이 호출될 때 복원할 수 있도록 이전 보고서 후크를 추적합니다.

CDebugReportHook::SetPipeName

이 메서드를 호출하여 디버그 보고서를 보낼 파이프의 컴퓨터 및 이름을 설정합니다.

BOOL SetPipeName(
    LPCSTR szMachineName = ".",
    LPCSTR szPipeName = "AtlsDbgPipe") throw();

매개 변수

szMachineName
디버그 출력을 보내야 하는 컴퓨터의 이름입니다.

szPipeName
디버그 출력을 보내야 하는 명명된 파이프의 이름입니다.

Return Value

성공하면 TRUE를 반환하고 실패하면 FALSE를 반환합니다.

CDebugReportHook::SetTimeout

이 메서드를 호출하여 이 클래스가 명명된 파이프를 사용할 수 있을 때까지 대기하는 시간을 밀리초 단위로 설정합니다.

void SetTimeout(DWORD dwTimeout);

매개 변수

dwTimeout
이 클래스가 명명된 파이프를 사용할 수 있을 때까지 기다리는 시간(밀리초)입니다.

참고 항목

클래스