_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_ERROR
a _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 kontrolnímu výrazu nebo sestavě.
format
Ukazatel na formátovací řetězec použitý k vytvoření zprávy uživatele.
argument
Volitelné argumenty nahrazení, které format
použí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í _RPT
maker _CrtDbgReport
pro _RPTF
ladění pro generování sestav ladění. Širokoznační verze těchto maker spolu s _ASSERT
, _ASSERTE
_RPTW
a _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 _CrtSetReportFile
slouží 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.
_CrtDbgReportW
je š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 , filename
lineNumber
moduleName
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 HANDLE už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, _CrtDbgReportW
můž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