CDebugReportHook 類別
使用此類別將偵錯報告傳送至命名管道。
語法
class CDebugReportHook
成員
公用建構函式
名稱 | 描述 |
---|---|
CDebugReportHook::CDebugReportHook | 呼叫 SetPipeName、 SetTimeout 和 SetHook。 |
CDebugReportHook::~CDebugReportHook | 呼叫 CDebugReportHook::RemoveHook。 |
公用方法
名稱 | 描述 |
---|---|
CDebugReportHook::CDebugReportHookProc | (靜態)連結至 C 執行時間偵錯報告程式的自訂報告函式。 |
CDebugReportHook::RemoveHook | 呼叫此方法以停止將偵錯報告傳送至具名管道,並還原先前的報表攔截。 |
CDebugReportHook::SetHook | 呼叫這個方法,開始將偵錯報告傳送至命名管道。 |
CDebugReportHook::SetPipeName | 呼叫這個方法,以設定將傳送偵錯報告之管道的計算機和名稱。 |
CDebugReportHook::SetTimeout | 呼叫這個方法,以毫秒為單位來設定這個類別將等候命名管道可供使用的時間。 |
備註
在服務或應用程式的偵錯組建中建立這個類別的實例,以將偵錯報告傳送至命名管道。 偵錯報告是藉由呼叫 _CrtDbgReport 或使用這個函式的包裝函式來產生,例如 ATLTRACE 和 ATLASSERT 巨集。
使用此類別可讓您以互動方式偵錯在非互動式 視窗月臺中執行的元件。
請注意,偵錯報告會使用線程的基礎安全性內容來傳送。 模擬會暫時停用,以便在模擬低許可權用戶的情況中檢視偵錯報告,例如在 Web 應用程式中。
需求
標頭: atlutil.h
CDebugReportHook::CDebugReportHook
呼叫 SetPipeName、 SetTimeout 和 SetHook。
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
此類別將等候命名管道可供使用的時間,以毫秒為單位。