Compartir a través de


Clase CDebugReportHook

Use esta clase para enviar informes de depuración a una canalización con nombre.

Sintaxis

class CDebugReportHook

Miembros

Constructores públicos

Nombre Descripción
CDebugReportHook::CDebugReportHook Llama a SetPipeName, SetTimeout y SetHook.
CDebugReportHook::~CDebugReportHook Llama a CDebugReportHook::RemoveHook.

Métodos públicos

Nombre Descripción
CDebugReportHook::CDebugReportHookProc (Estático) Función de informes personalizada que se enlaza al proceso de generación de informes de depuración en tiempo de ejecución de C.
CDebugReportHook::RemoveHook Llame a este método para dejar de enviar informes de depuración a la canalización con nombre y restaurar el enlace de informes anterior.
CDebugReportHook::SetHook Llame a este método para empezar a enviar informes de depuración a la canalización con nombre.
CDebugReportHook::SetPipeName Llame a este método para establecer la máquina y el nombre de la canalización a la que se enviarán los informes de depuración.
CDebugReportHook::SetTimeout Llame a este método para establecer el tiempo en milisegundos que va a esperar esta clase a que la canalización con nombre esté disponible.

Comentarios

Cree una instancia de esta clase en las compilaciones de depuración de los servicios o las aplicaciones para enviar informes de depuración a una canalización con nombre. Los informes de depuración se generan mediante una llamada a _CrtDbgReport o mediante un contenedor para esta función, como las macros ATLTRACE y ATLASSERT.

El uso de esta clase permite depurar de forma interactiva los componentes que se ejecutan en estaciones de ventana no interactivas.

Tenga en cuenta que los informes de depuración se envían mediante el contexto de seguridad subyacente del subproceso. La suplantación está deshabilitada temporalmente para que los informes de depuración se puedan ver en situaciones en las que se está realizando la suplantación de usuarios con pocos privilegios, como en las aplicaciones web.

Requisitos

Header: atlutil.h

CDebugReportHook::CDebugReportHook

Llama a SetPipeName, SetTimeout y SetHook.

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

Parámetros

szMachineName
Nombre de la máquina a la que se debe enviar la salida de la depuración. El valor predeterminado es la máquina local.

szPipeName
Nombre de la canalización con nombre a la que se debe enviar la salida de depuración.

dwTimeout
Tiempo en milisegundos que va a esperar esta clase a que la canalización con nombre esté disponible.

CDebugReportHook::~CDebugReportHook

Llama a CDebugReportHook::RemoveHook.

~CDebugReportHook() throw();

CDebugReportHook::CDebugReportHookProc

Función de informes personalizada que se enlaza al proceso de generación de informes de depuración en tiempo de ejecución de C.

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

Parámetros

reportType
Tipo del informe (_CRT_WARN, _CRT_ERROR o _CRT_ASSERT).

message
Cadena de mensaje.

returnValue
Valor que debe devolver _CrtDbgReport.

Valor devuelto

Devuelve FALSE si el enlace se encarga de procesar completamente el mensaje en cuestión, de forma que no se requiera ningún informe posterior. Devuelve TRUE si _CrtDbgReport debe notificar el mensaje de la manera normal.

Comentarios

La función de informes intenta abrir la canalización con nombre y comunicarse con el proceso del otro extremo. Si la canalización está ocupada, la función de informes esperará hasta que la canalización esté libre o expire el tiempo de espera. El constructor puede establecer el tiempo de espera o mediante una llamada a CDebugReportHook::SetTimeout.

El código de esta función se ejecuta en el contexto de seguridad subyacente del subproceso que realiza la llamada, es decir, la suplantación está deshabilitada durante la duración de esta función.

CDebugReportHook::RemoveHook

Llame a este método para dejar de enviar informes de depuración a la canalización con nombre y restaurar el enlace de informes anterior.

void RemoveHook() throw();

Comentarios

Llama a _CrtSetReportHook2 para restaurar el enlace de informes anterior.

CDebugReportHook::SetHook

Llame a este método para empezar a enviar informes de depuración a la canalización con nombre.

void SetHook() throw();

Comentarios

Llama a _CrtSetReportHook2 para que los informes de depuración se enruten mediante CDebugReportHookProc a la canalización con nombre. Esta clase realiza un seguimiento del enlace de informes anterior para que se pueda restaurar cuando se llama a RemoveHook.

CDebugReportHook::SetPipeName

Llame a este método para establecer la máquina y el nombre de la canalización a la que se enviarán los informes de depuración.

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

Parámetros

szMachineName
Nombre de la máquina a la que se debe enviar la salida de la depuración.

szPipeName
Nombre de la canalización con nombre a la que se debe enviar la salida de depuración.

Valor devuelto

Devuelve TRUE si la operación se realiza correctamente; de lo contrario, devuelve FALSE.

CDebugReportHook::SetTimeout

Llame a este método para establecer el tiempo en milisegundos que va a esperar esta clase a que la canalización con nombre esté disponible.

void SetTimeout(DWORD dwTimeout);

Parámetros

dwTimeout
Tiempo en milisegundos que va a esperar esta clase a que la canalización con nombre esté disponible.

Consulte también

Clases