Classe CDebugReportHook

Usare questa classe per inviare report di debug a una named pipe.

Sintassi

class CDebugReportHook

Membri

Costruttori pubblici

Nome Descrizione
CDebugReportHook::CDebugReportHook Chiama SetPipeName, SetTimeout e SetHook.
CDebugReportHook::~CDebugReportHook Chiama CDebugReportHook::RemoveHook.

Metodi pubblici

Nome Descrizione
CDebugReportHook::CDebugReportHookProc (Statico) Funzione di creazione di report personalizzata che viene agganciata al processo di creazione di report di debug in fase di esecuzione C.
CDebugReportHook::RemoveHook Chiamare questo metodo per interrompere l'invio di report di debug alla named pipe e ripristinare l'hook del report precedente.
CDebugReportHook::SetHook Chiamare questo metodo per avviare l'invio di report di debug alla named pipe.
CDebugReportHook::SetPipeName Chiamare questo metodo per impostare il computer e il nome della pipe a cui verranno inviati i report di debug.
CDebugReportHook::SetTimeout Chiamare questo metodo per impostare il tempo in millisecondi in cui questa classe attenderà che la named pipe diventi disponibile.

Osservazioni:

Creare un'istanza di questa classe nelle compilazioni di debug dei servizi o delle applicazioni per inviare report di debug a una named pipe. I report di debug vengono generati chiamando _CrtDbgReport o usando un wrapper per questa funzione, ad esempio le macro ATLTRACE e ATLASSERT .

L'uso di questa classe consente di eseguire in modo interattivo il debug dei componenti in esecuzione in stazioni finestra non interattive.

Si noti che i report di debug vengono inviati usando il contesto di sicurezza sottostante del thread. La rappresentazione è temporaneamente disabilitata in modo che i report di debug possano essere visualizzati in situazioni in cui viene eseguita la rappresentazione di utenti con privilegi limitati, ad esempio nelle applicazioni Web.

Requisiti

Intestazione: atlutil.h

CDebugReportHook::CDebugReportHook

Chiama SetPipeName, SetTimeout e SetHook.

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

Parametri

szMachineName
Nome del computer a cui inviare l'output di debug. Il valore predefinito è il computer locale.

szPipeName
Nome della named pipe a cui inviare l'output di debug.

dwTimeout
Tempo in millisecondi in cui questa classe attenderà che la named pipe diventi disponibile.

CDebugReportHook::~CDebugReportHook

Chiama CDebugReportHook::RemoveHook.

~CDebugReportHook() throw();

CDebugReportHook::CDebugReportHookProc

Funzione di creazione di report personalizzata che viene agganciata al processo di creazione di report di debug in fase di esecuzione C.

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

Parametri

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

message
Stringa del messaggio.

returnValue
Valore che deve essere restituito da _CrtDbgReport.

Valore restituito

Restituisce FALSE se l'hook gestisce completamente il messaggio in questione in modo che non siano necessarie ulteriori segnalazioni. Restituisce TRUE se _CrtDbgReport deve segnalare il messaggio nel modo normale.

Osservazioni:

La funzione di report tenta di aprire la named pipe e comunicare con il processo all'altra estremità. Se la pipe è occupata, la funzione di report attenderà fino a quando la pipe non è libera o scade il timeout. Il timeout può essere impostato dal costruttore o da una chiamata a CDebugReportHook::SetTimeout.

Il codice in questa funzione viene eseguito nel contesto di sicurezza sottostante del thread chiamante, ovvero la rappresentazione è disabilitata per la durata di questa funzione.

CDebugReportHook::RemoveHook

Chiamare questo metodo per interrompere l'invio di report di debug alla named pipe e ripristinare l'hook del report precedente.

void RemoveHook() throw();

Osservazioni:

Chiama _CrtSetReportHook2 per ripristinare l'hook del report precedente.

CDebugReportHook::SetHook

Chiamare questo metodo per avviare l'invio di report di debug alla named pipe.

void SetHook() throw();

Osservazioni:

Chiama _CrtSetReportHook2 per fare in modo che i report di debug siano indirizzati tramite CDebugReportHookProc alla named pipe. Questa classe tiene traccia dell'hook del report precedente in modo che possa essere ripristinato quando viene chiamato RemoveHook .

CDebugReportHook::SetPipeName

Chiamare questo metodo per impostare il computer e il nome della pipe a cui verranno inviati i report di debug.

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

Parametri

szMachineName
Nome del computer a cui inviare l'output di debug.

szPipeName
Nome della named pipe a cui inviare l'output di debug.

Valore restituito

Restituisce TRUE in caso di esito positivo, FALSE in caso di errore.

CDebugReportHook::SetTimeout

Chiamare questo metodo per impostare il tempo in millisecondi in cui questa classe attenderà che la named pipe diventi disponibile.

void SetTimeout(DWORD dwTimeout);

Parametri

dwTimeout
Tempo in millisecondi in cui questa classe attenderà che la named pipe diventi disponibile.

Vedi anche

Classi