Sdílet prostřednictvím


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.

Viz také

Třídy