_CrtSetReportHook
將用戶端定義的報告函式連結到 C 執行階段偵錯報告處理序,以進行安裝 (僅限偵錯版本)。
語法
_CRT_REPORT_HOOK _CrtSetReportHook(
_CRT_REPORT_HOOK reportHook
);
參數
reportHook
要連結到 C 執行階段偵錯報告處理序的新用戶端定義報告函式。
傳回值
傳回上一個用戶端定義的報告函式。
備註
_CrtSetReportHook
可讓應用程式將自己的報告函式用於 C 執行階段偵錯程式庫報告處理序。 因此,每當 _CrtDbgReport
呼叫 以產生偵錯報告時,就會先呼叫應用程式的報告函式。 這項功能可讓應用程式執行類似如下的作業:篩選偵錯報告以專注於特定配置類型,或是將報表傳送至使用 _CrtDbgReport
所未提供的目的地。 若未定義 _DEBUG
,將會在前置處理期間移除對 _CrtSetReportHook
的呼叫。
如需 更強固的版本 _CrtSetReportHook
,請參閱 _CrtSetReportHook2
。
_CrtSetReportHook
函式會安裝 reportHook
中指定的新用戶端定義報告函式,並傳回先前的用戶端定義攔截程序。 下列範例示範用戶端定義的報表攔截程序應如何設計原型:
int YourReportHook( int reportType, char *message, int *returnValue );
其中 reportType
是偵錯報告類型 (_CRT_WARN
、_CRT_ERROR
或 _CRT_ASSERT
),message
是要包含在報表中之完整組合的偵錯使用者訊息,而 returnValue
是用戶端定義的報告函式所指定的值,應由 _CrtDbgReport
傳回。 如需可用報表類型的完整描述,請參閱 函式 _CrtSetReportMode
。
如果用戶端定義的報告函式可以完全處理偵錯訊息,而不需要進一步的報告,則函式應傳回 TRUE
。 如果函式傳回 FALSE
,就會呼叫 _CrtDbgReport
使用報表類型、模式和檔案的目前設定來產生偵錯報告。 此外,藉由在 returnValue
中指定 _CrtDbgReport
傳回值,應用程式也可以控制是否會發生偵錯中斷的情況。 如需如何設定和產生偵錯報告的完整描述,請參閱 _CrtSetReportMode
、 _CrtSetReportFile
和 _CrtDbgReport
。
如需使用其他支持攔截的運行時間函式和撰寫您自己的用戶端定義攔截函式的詳細資訊,請參閱 偵錯攔截函式撰寫。
注意
如果您的應用程式是以 /clr 編譯,並在應用程式結束 main 之後呼叫報告函式,則如果報告函式呼叫任何 CRT 函式,CLR 將會擲回例外狀況。
需求
常式 | 必要的標頭 |
---|---|
_CrtSetReportHook |
<crtdbg.h> |
如需相容性詳細資訊,請參閱相容性。
程式庫
僅限偵錯版本的 C 執行階段程式庫。