Teilen über


CDebugReportHook-Klasse

Verwenden Sie diese Klasse, um Debugberichte an eine benannte Pipe zu senden.

Syntax

class CDebugReportHook

Member

Öffentliche Konstruktoren

Name Beschreibung
CDebugReportHook::CDebugReportHook Ruft SetPipeName, SetTimeout und SetHook auf.
CDebugReportHook::~CDebugReportHook Ruft CDebugReportHook::RemoveHook auf.

Öffentliche Methoden

Name Beschreibung
CDebugReportHook::CDebugReportHookProc (Statisch) Die benutzerdefinierte Berichterstellungsfunktion, die in den C-Laufzeit-Debugberichtsprozess eingebunden ist.
CDebugReportHook::RemoveHook Rufen Sie diese Methode auf, um das Senden von Debugberichten an die benannte Pipe zu beenden und den vorherigen Berichtshaken wiederherzustellen.
CDebugReportHook::SetHook Rufen Sie diese Methode auf, um mit dem Senden von Debugberichten an die benannte Pipe zu beginnen.
CDebugReportHook::SetPipeName Rufen Sie diese Methode auf, um den Computer und den Namen der Pipe festzulegen, an die die Debugberichte gesendet werden.
CDebugReportHook::SetTimeout Rufen Sie diese Methode auf, um die Zeit in Millisekunden festzulegen, die diese Klasse wartet, bis die benannte Pipe verfügbar ist.

Hinweise

Erstellen Sie eine Instanz dieser Klasse in Debugbuilds Ihrer Dienste oder Anwendungen, um Debugberichte an eine benannte Pipe zu senden. Debugberichte werden durch Aufrufen _CrtDbgReport oder Verwenden eines Wrappers für diese Funktion wie die ATLTRACE - und ATLASSERT-Makros generiert.

Mithilfe dieser Klasse können Sie komponenten, die in nicht interaktiven Fensterstationen ausgeführt werden, interaktiv debuggen.

Beachten Sie, dass Debugberichte mithilfe des zugrunde liegenden Sicherheitskontexts des Threads gesendet werden. Der Identitätswechsel ist vorübergehend deaktiviert, sodass Debugberichte in Situationen angezeigt werden können, in denen identitätswechsel von Benutzern mit geringen Berechtigungen stattfindet, z. B. in Webanwendungen.

Anforderungen

Header: atlutil.h

CDebugReportHook::CDebugReportHook

Ruft SetPipeName, SetTimeout und SetHook auf.

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

Parameter

szMachineName
Der Name des Computers, an den die Debugausgabe gesendet werden soll. Standardmäßig wird der lokale Computer verwendet.

szPipeName
Der Name der benannten Pipe, an die die Debugausgabe gesendet werden soll.

dwTimeout
Die Zeit in Millisekunden, die diese Klasse wartet, bis die benannte Pipe verfügbar ist.

CDebugReportHook::~CDebugReportHook

Ruft CDebugReportHook::RemoveHook auf.

~CDebugReportHook() throw();

CDebugReportHook::CDebugReportHookProc

Die benutzerdefinierte Berichterstellungsfunktion, die in den C-Laufzeit-Debugberichtsprozess eingebunden ist.

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

Parameter

reportType
Der Typ des Berichts (_CRT_WARN, _CRT_ERROR oder _CRT_ASSERT).

message
Die Nachrichtenzeichenfolge.

returnValue
Der Wert, der von _CrtDbgReport zurückgegeben werden soll.

Rückgabewert

Gibt FALSE zurück, wenn der Hook die betreffende Nachricht vollständig verarbeitet, sodass keine weitere Berichterstattung erforderlich ist. Gibt TRUE zurück, wenn _CrtDbgReport die Nachricht normal berichtet werden soll.

Hinweise

Die Berichtsfunktion versucht, das benannte Pipe zu öffnen und mit dem Prozess am anderen Ende zu kommunizieren. Wenn die Pfeife ausgelastet ist, wartet die Berichtsfunktion, bis die Pfeife frei ist oder das Timeout abläuft. Das Timeout kann vom Konstruktor oder einem Aufruf von CDebugReportHook::SetTimeout festgelegt werden.

Der Code in dieser Funktion wird im zugrunde liegenden Sicherheitskontext des aufrufenden Threads ausgeführt, d. h. der Identitätswechsel wird für die Dauer dieser Funktion deaktiviert.

CDebugReportHook::RemoveHook

Rufen Sie diese Methode auf, um das Senden von Debugberichten an die benannte Pipe zu beenden und den vorherigen Berichtshaken wiederherzustellen.

void RemoveHook() throw();

Hinweise

Ruft _CrtSetReportHook2 auf, um den vorherigen Berichtshaken wiederherzustellen.

CDebugReportHook::SetHook

Rufen Sie diese Methode auf, um mit dem Senden von Debugberichten an die benannte Pipe zu beginnen.

void SetHook() throw();

Hinweise

Ruft _CrtSetReportHook2 auf, dass Debugberichte über CDebugReportHookProc an die benannte Pipe weitergeleitet werden. Diese Klasse verfolgt den vorherigen Berichtshaken, sodass er wiederhergestellt werden kann, wenn RemoveHook aufgerufen wird.

CDebugReportHook::SetPipeName

Rufen Sie diese Methode auf, um den Computer und den Namen der Pipe festzulegen, an die die Debugberichte gesendet werden.

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

Parameter

szMachineName
Der Name des Computers, an den die Debugausgabe gesendet werden soll.

szPipeName
Der Name der benannten Pipe, an die die Debugausgabe gesendet werden soll.

Rückgabewert

Gibt WAHR für Erfolg, FALSE bei Fehler zurück.

CDebugReportHook::SetTimeout

Rufen Sie diese Methode auf, um die Zeit in Millisekunden festzulegen, die diese Klasse wartet, bis die benannte Pipe verfügbar ist.

void SetTimeout(DWORD dwTimeout);

Parameter

dwTimeout
Die Zeit in Millisekunden, die diese Klasse wartet, bis die benannte Pipe verfügbar ist.

Siehe auch

Klassen