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.