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.