Sdílet prostřednictvím


_CrtDbgReport, _CrtDbgReportW

Vygeneruje sestavu se zprávou ladění a odešle sestavu do tří možných cílů (pouze ladicí verze).

Syntaxe

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] ...
);

Parametry

reportType
Typ sestavy: _CRT_WARN, _CRT_ERRORa _CRT_ASSERT.

filename
Ukazatel na název zdrojového souboru, kde došlo k assert/report nebo NULL.

lineNumber
Číslo řádku ve zdrojovém souboru, kde došlo k assert/report nebo NULL.

moduleName
Ukazatel na název modulu (.exe nebo .dll), kde došlo k assert nebo sestavě.

format
Ukazatel na formátovací řetězec použitý k vytvoření zprávy uživatele.

argument
Volitelné argumenty nahrazení, které formatpoužívá .

Vrácená hodnota

Pro všechny cíle _CrtDbgReport sestavy a _CrtDbgReportW vrátit -1, pokud dojde k chybě, a 0, pokud nejsou zjištěny žádné chyby. Pokud je ale cílem sestavy okno zprávy ladění a uživatel zvolí tlačítko Opakovat , vrátí tyto funkce hodnotu 1. Pokud uživatel vybere tlačítko Přerušit v okně Ladicí zpráva, tyto funkce okamžitě přeruší a nevrátí hodnotu.

Volání _RPTmaker _CrtDbgReport pro _RPTF ladění pro generování sestav ladění. Širokoznační verze těchto maker spolu s _ASSERT, _ASSERTE_RPTWa _RPTFW, slouží _CrtDbgReportW ke generování jejich ladicí sestavy. Když _CrtDbgReport nebo _CrtDbgReportW vrátí hodnotu 1, spustí tato makra ladicí program, pokud je povolené ladění za běhu (JIT).

Poznámky

_CrtDbgReport Sestavu _CrtDbgReportW ladění můžete odeslat do tří různých cílů: soubor sestavy ladění, monitorování ladění (ladicí program sady Visual Studio) nebo okno zprávy ladění. Dvě konfigurační funkce _CrtSetReportMode a _CrtSetReportFileslouží k určení cíle nebo cílů pro každý typ sestavy. Tyto funkce umožňují samostatné řízení cíle nebo cíle generování sestav pro každý typ sestavy. Je například možné určit, že reportType do monitoru ladění přejde jenom část _CRT_WARN , zatímco reportType do _CRT_ASSERT okna ladicí zprávy i do souboru sestavy definované uživatelem.

_CrtDbgReportWje širokoznační verze ._CrtDbgReport Všechny jeho výstupní a řetězcové parametry jsou v širokoznakových řetězcích; jinak je stejný jako verze jednobajtů.

_CrtDbgReport a _CrtDbgReportW vytvořte zprávu uživatele pro ladicí sestavu nahrazením argument[n] argumentů do format řetězce pomocí stejných pravidel definovaných funkcemi printf nebo wprintf funkcemi. Tyto funkce pak vygenerují ladicí sestavu a určí cíl nebo cíle na základě aktuálních režimů sestavy a souboru definovaného pro reportType. Při odeslání sestavy do okna ladicí zprávy , filenamelineNumbermoduleName a jsou zahrnuty v informacích zobrazených v okně.

Následující tabulka uvádí dostupné volby pro režim sestavy nebo režimy a soubor a výsledné chování _CrtDbgReport a _CrtDbgReportW. Tyto možnosti jsou definovány jako příznaky bitů v <crtdbg.h>.

Režim sestavy Soubor sestavy _CrtDbgReport, _CrtDbgReportW chování
_CRTDBG_MODE_DEBUG Nelze použít Zapisuje zprávu pomocí rozhraní API systému Windows OutputDebugString .
_CRTDBG_MODE_WNDW Nelze použít Zavolá rozhraní API systému Windows MessageBox , aby vytvořilo okno se zprávou, aby se zobrazila společně s tlačítky Přerušit, Opakovat a Ignorovat . Pokud uživatel zvolí přerušení_CrtDbgReport nebo _CrtDbgReport okamžitě přeruší. Pokud uživatel zvolí možnost Opakovat, vrátí hodnotu 1. Pokud uživatel zvolí Ignorovat, provádění bude pokračovat a _CrtDbgReport_CrtDbgReportW vrátit hodnotu 0. Volba Ignorovat, pokud existuje chybový stav, má často za následek nedefinované chování.
_CRTDBG_MODE_FILE __HFILE Zapisuje zprávu do zadaného HANDLEuživatelem pomocí rozhraní API systému Windows WriteFile a neověřuje platnost popisovače souborů. Aplikace zodpovídá za otevření souboru sestavy a předání platného popisovače souboru.
_CRTDBG_MODE_FILE _CRTDBG_FILE_STDERR Zapíše zprávu do stderr.
_CRTDBG_MODE_FILE _CRTDBG_FILE_STDOUT Zapíše zprávu do stdout.

Sestavu je možné odeslat do jednoho, dvou nebo tří cílů nebo do žádného cíle. Další informace o určení režimu sestavy nebo režimů a souboru sestavy najdete v tématu _CrtSetReportMode a _CrtSetReportFile funkce. Další informace o používání ladicích maker a funkcí vytváření sestav naleznete v tématu Makra pro vytváření sestav.

Pokud vaše aplikace potřebuje větší flexibilitu, než kterou _CrtDbgReport poskytuje, _CrtDbgReportWmůžete napsat vlastní funkci generování sestav a připojit ji k mechanismu generování sestav knihovny runtime jazyka C pomocí _CrtSetReportHook této funkce.

Požadavky

Rutina Požadovaný hlavičkový soubor
_CrtDbgReport <crtdbg.h>
_CrtDbgReportW <crtdbg.h>

_CrtDbgReport a _CrtDbgReportW jedná se o rozšíření Microsoftu. Další informace naleznete v tématu Kompatibilita.

Knihovny

Ladění pouze verzí knihoven runtime jazyka C.

Příklad

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

int main(int argc, char *argv[]) {
#ifdef _DEBUG
   _CrtDbgReport(_CRT_ASSERT, __FILE__, __LINE__, argv[0], NULL);
#endif
}

Podívejte crt_dbg2 se na příklad, jak změnit funkci sestavy.

Viz také

Rutiny ladění
_CrtSetReportMode
_CrtSetReportFile
printf, _printf_l, wprintf, _wprintf_l
_DEBUG