_CrtDbgReport, _CrtDbgReportW

Generiert einen Bericht mit einer Debugmeldung und sendet den Bericht zu drei möglichen Zielen (nur Debugversion).

Syntax

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

Parameter

reportType
Berichtstyp: _CRT_WARN, _CRT_ERROR und _CRT_ASSERT.

filename
Zeiger auf den Namen der Quelldatei, in der Assert/Bericht oder NULL aufgetreten sind.

lineNumber
Zeilennummer in der Quelldatei, in der Assert/Bericht oder NULL aufgetreten sind.

moduleName
Zeiger auf den Namen des Moduls (.exe oder .dll), in dem die Assertion oder der Bericht aufgetreten ist.

format
Zeiger auf die Formatsteuerelementzeichenfolge, mit der die Benutzermeldung erstellt wird.

argument
Von format verwendete optionale Ersatzargumente.

Rückgabewert

Geben Sie für alle Berichtsziele -1 zurück, _CrtDbgReport_CrtDbgReportW wenn ein Fehler auftritt, und 0, wenn keine Fehler aufgetreten sind. Wenn das Berichtsziel jedoch ein Debugmeldungsfenster ist und der Benutzer die Schaltfläche "Wiederholen " auswäht, geben diese Funktionen "1" zurück. Wenn der Benutzer die Schaltfläche "Abbrechen " im Fenster "Debugnachricht" auswähbt, werden diese Funktionen sofort abgebrochen und geben keinen Wert zurück.

Der Aufruf _RPTF von _RPTDebugmakros _CrtDbgReport zum Generieren der Debugberichte. Die breitformatigen Versionen dieser Makros sowie _ASSERT, _ASSERTE_RPTWund _RPTFWverwenden_CrtDbgReportW, um ihre Debugberichte zu generieren. Wenn _CrtDbgReport oder _CrtDbgReportW zurückgeben 1, starten diese Makros den Debugger, wenn just-in-time (JIT)-Debugging aktiviert ist.

Hinweise

_CrtDbgReport und _CrtDbgReportW kann den Debugbericht an drei verschiedene Ziele senden: eine Debugberichtsdatei, einen Debugmonitor (visual Studio-Debugger) oder ein Debugnachrichtenfenster. Zum Angeben des Ziels oder der Ziele für jeden Berichtstyp werden zwei Konfigurationsfunktionen _CrtSetReportMode verwendet _CrtSetReportFile. Mithilfe dieser Funktionen können die Berichtsziele für die einzelnen Berichtstypen separat gesteuert werden. Beispielsweise ist es möglich, anzugeben, dass nur eine reportType von _CRT_WARN nur dem Debugmonitor übergeben wird, während ein reportType Von-Element _CRT_ASSERT sowohl zu einem Debugmeldungsfenster als auch zu einer benutzerdefinierten Berichtsdatei wechselt.

_CrtDbgReportW ist die Breitzeichenversion von _CrtDbgReport. Alle Ausgabe- und Zeichenfolgenparameter befinden sich in breiten Zeichenfolgen; andernfalls ist sie identisch mit der Einzelbyte-Zeichenversion.

_CrtDbgReport und _CrtDbgReportW erstellen Sie die Benutzernachricht für den Debugbericht, indem Sie die argument[n] Argumente in die format Zeichenfolge ersetzen, wobei die gleichen Regeln verwendet werden, die von den printf Funktionen wprintf definiert sind. Diese Funktionen generieren dann den Debugbericht und bestimmen das Ziel bzw. die Ziele gemäß der der für reportType definierten aktuellen Berichtsmodi und Berichtsdatei. Wenn der Bericht an ein Debugmeldungsfenster gesendet wird, sind filename, lineNumber und moduleName in den im Fenster angezeigten Informationen enthalten.

In der folgenden Tabelle werden die verfügbaren Optionen für den Berichtsmodus (bzw. die Berichtsmodi) und die Berichtsdatei sowie das resultierende Verhalten von _CrtDbgReport und _CrtDbgReportW aufgeführt. Diese Optionen werden als Bitkennzeichnungen in <crtdbg.h> definiert.

Berichtsmodus Berichtsdatei Verhalten von _CrtDbgReport und _CrtDbgReportW
_CRTDBG_MODE_DEBUG Nicht zutreffend Schreibt Nachrichten mithilfe der Windows-API OutputDebugString .
_CRTDBG_MODE_WNDW Nicht zutreffend Ruft die Windows-API MessageBox auf, um das Meldungsfeld zu erstellen, um die Nachricht zusammen mit den Schaltflächen "Abbrechen", "Wiederholen" und "Ignorieren " anzuzeigen. Wenn ein Benutzer "Abbrechen" auswäht oder _CrtDbgReport_CrtDbgReport sofort abbricht. Wenn ein Benutzer " Wiederholen" auswäht, wird 1 zurückgegeben. Wenn ein Benutzer "Ignorieren" auswäht, wird die Ausführung fortgesetzt und _CrtDbgReport_CrtDbgReportW gibt "0" zurück. Die Option "Ignorieren", wenn eine Fehlerbedingung vorhanden ist, führt häufig zu einem nicht definierten Verhalten.
_CRTDBG_MODE_FILE __HFILE Schreibt eine Nachricht in die vom Benutzer bereitgestellte HANDLENachricht mithilfe der Windows-API WriteFile und überprüft nicht die Gültigkeit des Dateihandles. Die Anwendung ist für das Öffnen der Berichtsdatei und das Übergeben eines gültigen Dateihandle verantwortlich.
_CRTDBG_MODE_FILE _CRTDBG_FILE_STDERR Schreibt eine Meldung in stderr.
_CRTDBG_MODE_FILE _CRTDBG_FILE_STDOUT Schreibt eine Meldung in stdout.

Der Bericht entweder an ein Ziel, an zwei oder drei Ziele oder an kein Ziel gesendet werden. Weitere Informationen zum Angeben des Berichtsmodus oder der Berichtsdatei finden Sie unter den _CrtSetReportMode und _CrtSetReportFile den Funktionen. Weitere Informationen zur Verwendung der Debugmakros und Berichterstellungsfunktionen finden Sie unter Makros für die Berichterstellung.

Wenn Ihre Anwendung mehr Flexibilität benötigt als die von _CrtDbgReport und _CrtDbgReportW, können Sie Ihre eigene Berichterstellungsfunktion schreiben und in den C-Laufzeitbibliotheksberichtsmechanismus integrieren, indem Sie die _CrtSetReportHook Funktion verwenden.

Anforderungen

Routine Erforderlicher Header
_CrtDbgReport <crtdbg.h>
_CrtDbgReportW <crtdbg.h>

_CrtDbgReport und _CrtDbgReportW sind Microsoft-Erweiterungen. Weitere Informationen finden Sie unter Kompatibilität.

Bibliotheken

Nur Debugversionen von C-Laufzeitbibliotheken

Beispiel

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

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

Ein Beispiel zum Ändern der Berichtsfunktion finden Sie crt_dbg2 unter

Siehe auch

Debugroutinen
_CrtSetReportMode
_CrtSetReportFile
printf, _printf_l, wprintf, _wprintf_l
_DEBUG