Klasa CDebugReportHook

Ta klasa służy do wysyłania raportów debugowania do nazwanego potoku.

Składnia

class CDebugReportHook

Elementy członkowskie

Konstruktory publiczne

Nazwa/nazwisko opis
CDebugReportHook::CDebugReportHook Wywołuje metodę SetPipeName, SetTimeout i SetHook.
CDebugReportHook::~CDebugReportHook Wywołuje element CDebugReportHook::RemoveHook.

Metody publiczne

Nazwa/nazwisko opis
CDebugReportHook::CDebugReportHookProc (Statyczne) Niestandardowa funkcja raportowania, która jest podłączona do procesu raportowania debugowania w czasie wykonywania języka C.
CDebugReportHook::RemoveHook Wywołaj tę metodę, aby zatrzymać wysyłanie raportów debugowania do nazwanego potoku i przywrócić poprzedni punkt zaczepienia raportu.
CDebugReportHook::SetHook Wywołaj tę metodę, aby rozpocząć wysyłanie raportów debugowania do nazwanego potoku.
CDebugReportHook::SetPipeName Wywołaj tę metodę, aby ustawić maszynę i nazwę potoku, do którego będą wysyłane raporty debugowania.
CDebugReportHook::SetTimeout Wywołaj tę metodę, aby ustawić czas w milisekundach, przez który ta klasa będzie czekać na udostępnienie nazwanego potoku.

Uwagi

Utwórz wystąpienie tej klasy w kompilacjach debugowania usług lub aplikacji w celu wysyłania raportów debugowania do nazwanego potoku. Raporty debugowania są generowane przez wywołanie _CrtDbgReport lub użycie otoki dla tej funkcji, takich jak makra ATLTRACE i ATLASSERT .

Użycie tej klasy umożliwia interaktywne debugowanie składników uruchomionych na nieinterakcyjnych stacjach okien.

Należy pamiętać, że raporty debugowania są wysyłane przy użyciu bazowego kontekstu zabezpieczeń wątku. Personifikacja jest tymczasowo wyłączona, dzięki czemu raporty debugowania mogą być wyświetlane w sytuacjach, w których odbywa się personifikacja użytkowników z niskimi uprawnieniami, na przykład w aplikacjach internetowych.

Wymagania

Nagłówek: atlutil.h

CDebugReportHook::CDebugReportHook

Wywołuje metodę SetPipeName, SetTimeout i SetHook.

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

Parametry

szMachineName
Nazwa maszyny, do której powinny zostać wysłane dane wyjściowe debugowania. Domyślnie jest to komputer lokalny.

szPipeName
Nazwa nazwanego potoku, do którego powinny być wysyłane dane wyjściowe debugowania.

dwTimeout
Czas w milisekundach, przez który ta klasa będzie czekać na udostępnienie nazwanego potoku.

CDebugReportHook::~CDebugReportHook

Wywołuje element CDebugReportHook::RemoveHook.

~CDebugReportHook() throw();

CDebugReportHook::CDebugReportHookProc

Niestandardowa funkcja raportowania, która jest podłączona do procesu raportowania debugowania w czasie wykonywania języka C.

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

Parametry

reportType
Typ raportu (_CRT_WARN, _CRT_ERROR lub _CRT_ASSERT).

message
Ciąg komunikatu.

returnValue
Wartość, która powinna zostać zwrócona przez _CrtDbgReport.

Wartość zwracana

Zwraca wartość FALSE, jeśli punkt zaczepienia całkowicie obsługuje komunikat, aby nie było wymagane dalsze raportowanie. Zwraca wartość TRUE, jeśli _CrtDbgReport powinna zgłosić komunikat w normalny sposób.

Uwagi

Funkcja raportowania próbuje otworzyć nazwany potok i komunikować się z procesem na drugim końcu. Jeśli potok jest zajęty, funkcja raportowania będzie czekać, aż potok będzie wolny lub upłynął limit czasu. Limit czasu można ustawić za pomocą konstruktora lub wywołania metody CDebugReportHook::SetTimeout.

Kod w tej funkcji jest wykonywany w podstawowym kontekście zabezpieczeń wątku wywołującego, czyli personifikacja jest wyłączona przez czas trwania tej funkcji.

CDebugReportHook::RemoveHook

Wywołaj tę metodę, aby zatrzymać wysyłanie raportów debugowania do nazwanego potoku i przywrócić poprzedni punkt zaczepienia raportu.

void RemoveHook() throw();

Uwagi

Wywołuje _CrtSetReportHook2 , aby przywrócić poprzedni punkt zaczepienia raportu.

CDebugReportHook::SetHook

Wywołaj tę metodę, aby rozpocząć wysyłanie raportów debugowania do nazwanego potoku.

void SetHook() throw();

Uwagi

Wywołuje _CrtSetReportHook2 , aby raporty debugowania kierowane przez CDebugReportHookProc do nazwanego potoku. Ta klasa śledzi poprzedni punkt zaczepienia raportu, aby można było go przywrócić po wywołaniu elementu RemoveHook .

CDebugReportHook::SetPipeName

Wywołaj tę metodę, aby ustawić maszynę i nazwę potoku, do którego będą wysyłane raporty debugowania.

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

Parametry

szMachineName
Nazwa maszyny, do której powinny zostać wysłane dane wyjściowe debugowania.

szPipeName
Nazwa nazwanego potoku, do którego powinny być wysyłane dane wyjściowe debugowania.

Wartość zwracana

Zwraca wartość TRUE w przypadku powodzenia, FALSE w przypadku niepowodzenia.

CDebugReportHook::SetTimeout

Wywołaj tę metodę, aby ustawić czas w milisekundach, przez który ta klasa będzie czekać na udostępnienie nazwanego potoku.

void SetTimeout(DWORD dwTimeout);

Parametry

dwTimeout
Czas w milisekundach, przez który ta klasa będzie czekać na udostępnienie nazwanego potoku.

Zobacz też

Klasy