共用方式為


_CrtDbgReport _CrtDbgReportW

會產生報告,以偵錯訊息並傳送報表給三個可能的目的地 (偵錯版本)。

int _CrtDbgReport( 
   int reportType,
   const char *filename,
   int linenumber,
   const char *moduleName,
   const char *format [,
   argument] ... 
);
int _CrtDbgReportW( 
   int reportType,
   const wchar_t *filename,
   int linenumber,
   const wchar_t *moduleName,
   const wchar_t *format [,
   argument] ... 
);

參數

  • reportType
    Report type: _CRT_WARN, _CRT_ERROR, and _CRT_ASSERT.

  • filename
    判斷提示/報表的發生位置的原始程式檔名稱的指標或NULL。

  • linenumber
    行號報告判斷提示的發生位置的原始程式檔中或NULL。

  • moduleName
    模組 (.exe 或.dll) 發生判斷提示/報表名稱的指標。

  • format
    用來建立使用者的訊息的控制項的格式字串的指標。

  • argument
    選擇性的替換所使用的引數format。

傳回值

所有的報表目的地, _CrtDbgReport和_CrtDbgReportW傳回 – 1,如果發生錯誤,是 0,如果不發生任何錯誤。 不過,當報告的目標是偵錯訊息視窗和使用者按下Retry ] 按鈕,這些函數會傳回 1。 如果使用者按一下Abort按鈕在偵錯訊息] 視窗中,這些函式立即中止,不會傳回值。

_RPT、 _RPTF 偵錯巨集呼叫_CrtDbgReport產生其偵錯報告。 這些巨集的寬字元版本,以及 _ASSERT [E, _RPTWn和_RPTFWn,使用_CrtDbgReportW產生其偵錯報告。 當_CrtDbgReport或_CrtDbgReportW傳回 1,前提是啟用就是即時 (JIT) 偵錯時,這些巨集開始偵錯工具。

備註

_CrtDbgReport與_CrtDbgReportW可以將偵錯報告傳送給三個不同的目的地: 偵錯報告檔、 偵錯監視器 ( Visual Studio偵錯工具),或偵錯訊息視窗。 兩個設定函式, _CrtSetReportMode_CrtSetReportFile,用來指定目的地 」 或 「 每一種報表類型的目的地。 這些功能讓某些報告的目的或個別控制每一種報表類型的目的地。 比方說,就可以指定讓reportType的_CRT_WARN只會傳送至偵錯監視器,而reportType的_CRT_ASSERT傳送至偵錯訊息視窗和使用者定義的報表檔案。

_CrtDbgReportW是的寬字元版本_CrtDbgReport。 所有其字串和輸出參數都位於寬字元字串。 否則,它是單一位元組字元集版本完全相同。

_CrtDbgReport與_CrtDbgReportW使用者來建立郵件偵錯報表以取代argumentn 引數到format字串,使用相同的規則所定義的printf或wprintf函式。 這些函式然後產生偵錯報告,並判斷目的地或目的地,根據目前的報表模式及檔案所定義的reportType。 當報告傳送至偵錯訊息] 視窗中, filename, lineNumber,以及moduleName包含在視窗中顯示的資訊。

下表列出可用的選項為報表模式或模式及檔案以及所產生的行為的_CrtDbgReport和_CrtDbgReportW。 這些選項會定義為在 Crtdbg.h 中的位元旗標。

報告模式

報表檔案

_CrtDbgReport_CrtDbgReportW行為

_CRTDBG_MODE_DEBUG

不適用

將訊息寫入至 Windows OutputDebugString API。

_CRTDBG_MODE_WNDW

不適用

呼叫 Windows MessageBox API 來建立訊息方塊顯示的訊息,以及Abort, Retry,以及Ignore按鈕。 如果使用者按一下Abort, _CrtDbgReport或_CrtDbgReport立即中止。 如果使用者按一下Retry,它將傳回 1。 如果使用者按一下Ignore,會繼續執行,並_CrtDbgReport和_CrtDbgReportW傳回 0。 請注意,按一下 [ Ignore的錯誤情況存在時通常會導致 「 未定義的行為"。

_CRTDBG_MODE_FILE

__HFILE

為使用者提供的寫入訊息HANDLE,使用 Windows WriteFile API 並不會驗證有效的檔案控制代碼。 應用程式負責開啟報告檔案,並傳遞有效的檔案控制代碼。

_CRTDBG_MODE_FILE

_CRTDBG_FILE_STDERR

寫入訊息至stderr。

_CRTDBG_MODE_FILE

_CRTDBG_FILE_STDOUT

寫入訊息至stdout。

報表可傳送給一、 兩個或三個目的地,或沒有目的地根本。 如需有關如何指定報表模式或模式和報告檔的詳細資訊,請參閱 _CrtSetReportMode_CrtSetReportFile 函式。 如需有關使用偵錯巨集,並報告函式的詳細資訊,請參閱來進行驗證和報告使用的巨集

如果您的應用程式需要靈活彈性更勝所提供的_CrtDbgReport和_CrtDbgReportW,您可以撰寫自己的報告函式,並將它連結至報告機制,藉由使用 c 執行階段程式庫 _CrtSetReportHook 函式。

需求

常式

所需的標頭

_CrtDbgReport

<crtdbg.h>

_CrtDbgReportW

<crtdbg.h>

如需相容性資訊,請參閱相容性在簡介中。

文件庫

偵錯版本的 C 執行階段程式庫只。

範例

// crt_crtdbgreport.c
#include <crtdbg.h>

int main() {
#ifdef _DEBUG
   CrtDbgReport(_CRT_ASSERT, NULL, NULL, "some module", NULL);
#endif
}

請參閱 crt_dbg2 如需如何變更報告函式的範例。

.NET Framework 對等用法

請參閱

參考

偵錯常式

_CrtSetReportMode

_CrtSetReportFile

printf、 _printf_l、 wprintf、 _wprintf_l

_DEBUG