CDebugReportHook 클래스
이 클래스를 사용하여 명명된 파이프에 디버그 보고서를 보냅니다.
구문
class CDebugReportHook
멤버
공용 생성자
속성 | 설명 |
---|---|
CDebugReportHook::CDebugReportHook | SetPipeName, SetTimeout 및 SetHook을 호출합니다. |
CDebugReportHook::~CDebugReportHook | CDebugReportHook::RemoveHook를 호출합니다. |
공용 메서드
이름 | 설명 |
---|---|
CDebugReportHook::CDebugReportHookProc | (정적) C 런타임 디버그 보고 프로세스에 연결된 사용자 지정 보고 함수입니다. |
CDebugReportHook::RemoveHook | 이 메서드를 호출하여 명명된 파이프로 디버그 보고서 전송을 중지하고 이전 보고서 후크를 복원합니다. |
CDebugReportHook::SetHook | 이 메서드를 호출하여 명명된 파이프에 디버그 보고서 보내기를 시작합니다. |
CDebugReportHook::SetPipeName | 이 메서드를 호출하여 디버그 보고서를 보낼 파이프의 컴퓨터 및 이름을 설정합니다. |
CDebugReportHook::SetTimeout | 이 메서드를 호출하여 이 클래스가 명명된 파이프를 사용할 수 있을 때까지 대기하는 시간을 밀리초 단위로 설정합니다. |
설명
서비스 또는 애플리케이션의 디버그 빌드에서 이 클래스의 인스턴스를 만들어 명명된 파이프에 디버그 보고서를 보냅니다. 디버그 보고서는 _CrtDbgReport 호출하거나 ATLTRACE 및 ATLASSERT 매크로와 같은 이 함수에 대한 래퍼를 사용하여 생성됩니다.
이 클래스를 사용하면 비대화형 창 스테이션에서 실행되는 구성 요소를 대화형으로 디버그할 수 있습니다.
디버그 보고서는 스레드의 기본 보안 컨텍스트를 사용하여 전송됩니다. 웹 애플리케이션과 같이 낮은 권한 사용자의 가장이 발생하는 상황에서 디버그 보고서를 볼 수 있도록 일시적으로 가장을 사용하지 않도록 설정됩니다.
요구 사항
헤더: atlutil.h
CDebugReportHook::CDebugReportHook
SetPipeName, SetTimeout 및 SetHook을 호출합니다.
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
이 클래스가 명명된 파이프를 사용할 수 있을 때까지 기다리는 시간(밀리초)입니다.