Partager via


CDebugReportHook, classe

Utilisez cette classe pour envoyer des rapports de débogage à un canal nommé.

Syntaxe

class CDebugReportHook

Membres

Constructeurs publics

Nom Description
CDebugReportHook ::CDebugReportHook Appelle SetPipeName, SetTimeout et SetHook.
CDebugReportHook ::~CDebugReportHook Appelle CDebugReportHook ::RemoveHook.

Méthodes publiques

Nom Description
CDebugReportHook ::CDebugReportHookProc (Statique) Fonction de création de rapports personnalisée connectée au processus de création de rapports au moment de l’exécution C.
CDebugReportHook ::RemoveHook Appelez cette méthode pour arrêter l’envoi de rapports de débogage au canal nommé et restaurer le hook de rapport précédent.
CDebugReportHook ::SetHook Appelez cette méthode pour commencer à envoyer des rapports de débogage au canal nommé.
CDebugReportHook ::SetPipeName Appelez cette méthode pour définir l’ordinateur et le nom du canal vers lequel les rapports de débogage seront envoyés.
CDebugReportHook ::SetTimeout Appelez cette méthode pour définir l’heure en millisecondes que cette classe attendra que le canal nommé devienne disponible.

Notes

Créez une instance de cette classe dans les builds de débogage de vos services ou applications pour envoyer des rapports de débogage à un canal nommé. Les rapports de débogage sont générés en appelant _CrtDbgReport ou en utilisant un wrapper pour cette fonction, comme les macros ATLTRACE et ATLASSERT .

L’utilisation de cette classe vous permet de déboguer de manière interactive les composants s’exécutant dans des stations de fenêtres non interactives.

Notez que les rapports de débogage sont envoyés à l’aide du contexte de sécurité sous-jacent du thread. L’emprunt d’identité est temporairement désactivé afin que les rapports de débogage puissent être consultés dans les situations où l’emprunt d’identité des utilisateurs à privilège faible est en cours, comme dans les applications web.

Spécifications

En-tête : atlutil.h

CDebugReportHook ::CDebugReportHook

Appelle SetPipeName, SetTimeout et SetHook.

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

Paramètres

szMachineName
Nom de l’ordinateur auquel la sortie de débogage doit être envoyée. Valeur par défaut de l’ordinateur local.

szPipeName
Nom du canal nommé vers lequel la sortie de débogage doit être envoyée.

dwTimeout
Temps en millisecondes pendant lequel cette classe attend la disponibilité du canal nommé.

CDebugReportHook ::~CDebugReportHook

Appelle CDebugReportHook ::RemoveHook.

~CDebugReportHook() throw();

CDebugReportHook ::CDebugReportHookProc

Fonction de création de rapports personnalisée connectée au processus de création de rapports au moment de l’exécution C.

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

Paramètres

reportType
Type du rapport (_CRT_WARN, _CRT_ERROR ou _CRT_ASSERT).

message
Chaîne de message.

returnValue
Valeur qui doit être retournée par _CrtDbgReport.

Valeur de retour

Retourne FALSE si le hook gère complètement le message afin qu’aucun autre rapport ne soit nécessaire. Retourne TRUE si _CrtDbgReport vous devez signaler le message de façon normale.

Notes

La fonction de création de rapports tente d’ouvrir le canal nommé et de communiquer avec le processus à l’autre extrémité. Si le canal est occupé, la fonction de création de rapports attend que le canal soit libre ou que le délai d’expiration expire. Le délai d’expiration peut être défini par le constructeur ou un appel à CDebugReportHook ::SetTimeout.

Le code de cette fonction est exécuté dans le contexte de sécurité sous-jacent du thread appelant, autrement dit, l’emprunt d’identité est désactivé pendant la durée de cette fonction.

CDebugReportHook ::RemoveHook

Appelez cette méthode pour arrêter l’envoi de rapports de débogage au canal nommé et restaurer le hook de rapport précédent.

void RemoveHook() throw();

Notes

Appelle _CrtSetReportHook2 pour restaurer le hook de rapport précédent.

CDebugReportHook ::SetHook

Appelez cette méthode pour commencer à envoyer des rapports de débogage au canal nommé.

void SetHook() throw();

Notes

Appelle _CrtSetReportHook2 d’avoir des rapports de débogage routés via CDebugReportHookProc vers le canal nommé. Cette classe effectue le suivi du hook de rapport précédent afin qu’il puisse être restauré lorsque RemoveHook est appelé.

CDebugReportHook ::SetPipeName

Appelez cette méthode pour définir l’ordinateur et le nom du canal vers lequel les rapports de débogage seront envoyés.

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

Paramètres

szMachineName
Nom de l’ordinateur auquel la sortie de débogage doit être envoyée.

szPipeName
Nom du canal nommé vers lequel la sortie de débogage doit être envoyée.

Valeur de retour

Retourne TRUE en cas de réussite, FALSE en cas d’échec.

CDebugReportHook ::SetTimeout

Appelez cette méthode pour définir l’heure en millisecondes que cette classe attendra que le canal nommé devienne disponible.

void SetTimeout(DWORD dwTimeout);

Paramètres

dwTimeout
Temps en millisecondes pendant lequel cette classe attend la disponibilité du canal nommé.

Voir aussi

Classes