Поделиться через


Класс 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.

Возвращаемое значение

Возвращает значение FALSE, если перехватчик обрабатывает сообщение полностью, чтобы дальнейшие отчеты не требовались. Возвращает значение TRUE, если _CrtDbgReport сообщение должно сообщаться обычным образом.

Замечания

Функция отчетов пытается открыть именованный канал и взаимодействовать с процессом в другом конце. Если канал занят, функция отчетов будет ждать, пока канал не будет свободен или истекает время ожидания. Время ожидания можно задать конструктором или вызовом 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
Имя именованного канала, в который должны отправляться выходные данные отладки.

Возвращаемое значение

Возвращает значение TRUE при успешном выполнении, false при сбое.

CDebugReportHook::SetTimeout

Вызовите этот метод, чтобы задать время в миллисекундах, которое этот класс будет ожидать, пока именованный канал станет доступным.

void SetTimeout(DWORD dwTimeout);

Параметры

dwTimeout
Время в миллисекундах, которое этот класс ожидает, пока именованный канал станет доступным.

См. также

Классы