CDebugReportHook – třída
Pomocí této třídy můžete odesílat ladicí sestavy do pojmenovaného kanálu.
Syntaxe
class CDebugReportHook
Členové
Veřejné konstruktory
Název | Popis |
---|---|
CDebugReportHook::CDebugReportHook | Volání SetPipeName, SetTimeout a SetHook. |
CDebugReportHook::~CDebugReportHook | Volá CDebugReportHook::RemoveHook. |
Veřejné metody
Název | Popis |
---|---|
CDebugReportHook::CDebugReportHookProc | (Statické) Vlastní funkce generování sestav, která je připojená k procesu generování sestav ladění za běhu jazyka C. |
CDebugReportHook::RemoveHook | Voláním této metody zastavíte odesílání sestav ladění do pojmenovaného kanálu a obnovíte předchozí háček sestavy. |
CDebugReportHook::SetHook | Voláním této metody začnete odesílat ladicí sestavy do pojmenovaného kanálu. |
CDebugReportHook::SetPipeName | Voláním této metody nastavíte počítač a název kanálu, do kterého se budou odesílat ladicí sestavy. |
CDebugReportHook::SetTimeout | Voláním této metody nastavíte čas v milisekundách, které tato třída bude čekat na zpřístupnění pojmenovaného kanálu. |
Poznámky
Vytvořte instanci této třídy v ladicích buildech služeb nebo aplikací, které odesílají ladicí sestavy do pojmenovaného kanálu. Ladicí sestavy se generují voláním _CrtDbgReport nebo použitím obálky pro tuto funkci, jako jsou makra ATLTRACE a ATLASSERT .
Použití této třídy umožňuje interaktivně ladit komponenty spuštěné v neinteraktivních stanicích oken.
Všimněte si, že ladicí sestavy se odesílají pomocí základního kontextu zabezpečení vlákna. Zosobnění je dočasně zakázáno, aby se ladicí sestavy mohly zobrazovat v situacích, kdy probíhá zosobnění uživatelů s nízkými oprávněními, například ve webových aplikacích.
Požadavky
Hlavička: atlutil.h
CDebugReportHook::CDebugReportHook
Volání SetPipeName, SetTimeout a SetHook.
CDebugReportHook(
LPCSTR szMachineName = ".",
LPCSTR szPipeName = "AtlsDbgPipe",
DWORD dwTimeout = 20000) throw();
Parametry
szMachineName
Název počítače, do kterého se má odeslat výstup ladění. Výchozí hodnota je místní počítač.
szPipeName
Název pojmenovaného kanálu, do kterého se má odeslat výstup ladění.
dwTimeout
Doba v milisekundách, po kterou bude tato třída čekat, až bude pojmenovaný kanál k dispozici.
CDebugReportHook::~CDebugReportHook
Volá CDebugReportHook::RemoveHook.
~CDebugReportHook() throw();
CDebugReportHook::CDebugReportHookProc
Vlastní funkce generování sestav, která je připojená k procesu generování sestav ladění za běhu jazyka C.
static int __cdecl CDebugReportHookProc(
int reportType,
char* message,
int* returnValue) throw();
Parametry
reportType
Typ sestavy (_CRT_WARN, _CRT_ERROR nebo _CRT_ASSERT).
message
Řetězec zprávy.
returnValue
Hodnota, která by měla být vrácena _CrtDbgReport.
Návratová hodnota
Vrátí hodnotu FALSE, pokud háček zpracuje danou zprávu zcela tak, aby se nevyžaduje žádné další hlášení. Vrátí hodnotu PRAVDA, pokud _CrtDbgReport
by zpráva měla hlásit normálním způsobem.
Poznámky
Funkce generování sestav se pokusí otevřít pojmenovaný kanál a komunikovat s procesem na druhém konci. Pokud je kanál zaneprázdněný, funkce generování sestav počká, dokud kanál nevyprší nebo nevyprší časový limit. Časový limit může nastavit konstruktor nebo volání CDebugReportHook::SetTimeout.
Kód v této funkci se spustí v kontextu základního zabezpečení volajícího vlákna, tj. zosobnění je po dobu trvání této funkce zakázané.
CDebugReportHook::RemoveHook
Voláním této metody zastavíte odesílání sestav ladění do pojmenovaného kanálu a obnovíte předchozí háček sestavy.
void RemoveHook() throw();
Poznámky
Volání _CrtSetReportHook2 k obnovení předchozího háku sestavy.
CDebugReportHook::SetHook
Voláním této metody začnete odesílat ladicí sestavy do pojmenovaného kanálu.
void SetHook() throw();
Poznámky
Volání _CrtSetReportHook2 k ladění sestav směrovaných přes CDebugReportHookProc do pojmenovaného kanálu. Tato třída sleduje předchozí háček sestavy, aby ji bylo možné obnovit při volání RemoveHook .
CDebugReportHook::SetPipeName
Voláním této metody nastavíte počítač a název kanálu, do kterého se budou odesílat ladicí sestavy.
BOOL SetPipeName(
LPCSTR szMachineName = ".",
LPCSTR szPipeName = "AtlsDbgPipe") throw();
Parametry
szMachineName
Název počítače, do kterého se má odeslat výstup ladění.
szPipeName
Název pojmenovaného kanálu, do kterého se má odeslat výstup ladění.
Návratová hodnota
Vrátí hodnotu PRAVDA při úspěchu, NEPRAVDA při selhání.
CDebugReportHook::SetTimeout
Voláním této metody nastavíte čas v milisekundách, které tato třída bude čekat na zpřístupnění pojmenovaného kanálu.
void SetTimeout(DWORD dwTimeout);
Parametry
dwTimeout
Doba v milisekundách, po kterou bude tato třída čekat, až bude pojmenovaný kanál k dispozici.