共用方式為


CDebugReportHook 類別

使用此類別將偵錯報告傳送至命名管道。

語法

class CDebugReportHook

成員

公用建構函式

名稱 描述
CDebugReportHook::CDebugReportHook 呼叫 SetPipeNameSetTimeoutSetHook
CDebugReportHook::~CDebugReportHook 呼叫 CDebugReportHook::RemoveHook

公用方法

名稱 描述
CDebugReportHook::CDebugReportHookProc (靜態)連結至 C 執行時間偵錯報告程式的自訂報告函式。
CDebugReportHook::RemoveHook 呼叫此方法以停止將偵錯報告傳送至具名管道,並還原先前的報表攔截。
CDebugReportHook::SetHook 呼叫這個方法,開始將偵錯報告傳送至命名管道。
CDebugReportHook::SetPipeName 呼叫這個方法,以設定將傳送偵錯報告之管道的計算機和名稱。
CDebugReportHook::SetTimeout 呼叫這個方法,以毫秒為單位來設定這個類別將等候命名管道可供使用的時間。

備註

在服務或應用程式的偵錯組建中建立這個類別的實例,以將偵錯報告傳送至命名管道。 偵錯報告是藉由呼叫 _CrtDbgReport 或使用這個函式的包裝函式來產生,例如 ATLTRACEATLASSERT 巨集。

使用此類別可讓您以互動方式偵錯在非互動式 視窗月臺中執行的元件。

請注意,偵錯報告會使用線程的基礎安全性內容來傳送。 模擬會暫時停用,以便在模擬低許可權用戶的情況中檢視偵錯報告,例如在 Web 應用程式中。

需求

標頭: atlutil.h

CDebugReportHook::CDebugReportHook

呼叫 SetPipeNameSetTimeoutSetHook

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

參數

szMachineName
應該傳送偵錯輸出的計算機名稱。 預設為本機計算機。

szPipeName
應該傳送偵錯輸出的命名管道名稱。

dwTimeout
此類別將等候命名管道可供使用的時間,以毫秒為單位。

CDebugReportHook::~CDebugReportHook

呼叫 CDebugReportHook::RemoveHook

~CDebugReportHook() throw();

CDebugReportHook::CDebugReportHookProc

連結至 C 執行時間偵錯報告程式的自訂報告函式。

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

參數

reportType
報表的類型(_CRT_WARN、_CRT_ERROR或_CRT_ASSERT)。

message
訊息字串。

returnValue
應該由 _CrtDbgReport回的值。

傳回值

如果攔截完全處理有問題的訊息,因此不需要進一步報告,則會傳回 FALSE。 如果 _CrtDbgReport 應該以正常方式報告訊息,則傳回 TRUE。

備註

報告函式會嘗試開啟命名管道,並在另一端與進程通訊。 如果管道忙碌中,報告函式會等到管道可用或逾時到期為止。 逾時可由建構函式或 CDebugReportHook::SetTimeout 呼叫來設定。

此函式中的程式代碼會在呼叫線程的基礎安全性內容中執行,也就是說,此函式的持續時間會停用模擬。

CDebugReportHook::RemoveHook

呼叫此方法以停止將偵錯報告傳送至具名管道,並還原先前的報表攔截。

void RemoveHook() throw();

備註

呼叫 _CrtSetReportHook2 還原上一個報表勾點。

CDebugReportHook::SetHook

呼叫這個方法,開始將偵錯報告傳送至命名管道。

void SetHook() throw();

備註

呼叫 _CrtSetReportHook2 讓偵錯報告透過 CDebugReportHookProc 路由傳送至命名管道。 這個類別會追蹤先前的報表攔截,以便在呼叫 RemoveHook還原它。

CDebugReportHook::SetPipeName

呼叫這個方法,以設定將傳送偵錯報告之管道的計算機和名稱。

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

參數

szMachineName
應該傳送偵錯輸出的計算機名稱。

szPipeName
應該傳送偵錯輸出的命名管道名稱。

傳回值

在成功時傳回 TRUE,失敗時傳回 FALSE。

CDebugReportHook::SetTimeout

呼叫這個方法,以毫秒為單位來設定這個類別將等候命名管道可供使用的時間。

void SetTimeout(DWORD dwTimeout);

參數

dwTimeout
此類別將等候命名管道可供使用的時間,以毫秒為單位。

另請參閱

類別