Udostępnij za pośrednictwem


_CrtDbgReport, _CrtDbgReportW

Generuje raport z komunikatem debugowania i wysyła raport do trzech możliwych miejsc docelowych (tylko wersja debugowania).

Składnia

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 raportu: _CRT_WARN, _CRT_ERRORi _CRT_ASSERT.

filename
Wskaźnik na nazwę pliku źródłowego, w którym wystąpiła asercja/raport lub NULL.

lineNumber
Numer wiersza w pliku źródłowym, w którym wystąpiła asercja/raport lub NULL.

moduleName
Wskaźnik do nazwy modułu (.exe lub .dll), w którym wystąpił asercja lub raport.

format
Wskaźnik do ciągu kontrolki formatu używany do tworzenia komunikatu użytkownika.

argument
Opcjonalne argumenty podstawienia używane przez formatprogram .

Wartość zwracana

W przypadku wszystkich miejsc docelowych raportu i _CrtDbgReportW zwróć wartość -1, _CrtDbgReport jeśli wystąpi błąd i 0, jeśli nie wystąpią żadne błędy. Jednak gdy miejsce docelowe raportu jest oknem komunikatu debugowania, a użytkownik wybierze przycisk Ponów próbę, te funkcje zwracają wartość 1. Jeśli użytkownik wybierze przycisk Przerwanie w oknie Komunikat debugowania, te funkcje natychmiast przerwać i nie zwracają wartości.

_RPTF Wywołanie _RPT_CrtDbgReport makr debugowania w celu wygenerowania raportów debugowania. Szerokie wersje tych makr, wraz z _ASSERT, _ASSERTE_RPTWi _RPTFW, służą _CrtDbgReportW do generowania raportów debugowania. Gdy _CrtDbgReport lub _CrtDbgReportW zwróci 1, te makra uruchamiają debuger, jeśli debugowanie just in time (JIT) jest włączone.

Uwagi

_CrtDbgReport i _CrtDbgReportW może wysyłać raport debugowania do trzech różnych miejsc docelowych: pliku raportu debugowania, monitora debugowania (debugera programu Visual Studio) lub okna komunikatu debugowania. Dwie funkcje _CrtSetReportMode konfiguracji i _CrtSetReportFile, służą do określania lokalizacji docelowej lub miejsc docelowych dla każdego typu raportu. Te funkcje umożliwiają oddzielne sterowanie miejscami docelowymi lub miejscami docelowymi raportowania dla każdego typu raportu. Na przykład można określić, że element z wartością reportType_CRT_WARN jest kierowany tylko do monitora debugowania, a element reportType przechodzi do okna komunikatu _CRT_ASSERT debugowania i pliku raportu zdefiniowanego przez użytkownika.

_CrtDbgReportWjest wersją o szerokim znaku ._CrtDbgReport Wszystkie jego parametry wyjściowe i parametry ciągu znajdują się w ciągach o szerokim znaku; w przeciwnym razie jest identyczna z wersją znaków jednobajtowych.

_CrtDbgReport i _CrtDbgReportW utwórz komunikat użytkownika dla raportu debugowania, podstawiając argument[n] argumenty w format ciągu przy użyciu tych samych reguł zdefiniowanych przez printf funkcje lub wprintf . Następnie te funkcje generują raport debugowania i określają lokalizację docelową lub docelową na podstawie bieżących trybów raportu i pliku zdefiniowanego dla programu reportType. Gdy raport zostanie wysłany do okna komunikatu debugowania, filenameelement , lineNumberi moduleName zostanie uwzględniony w informacjach wyświetlanych w oknie.

W poniższej tabeli wymieniono dostępne opcje dla trybu raportu lub trybów i plików oraz wynikowe zachowanie i _CrtDbgReport_CrtDbgReportW. Te opcje są definiowane jako flagi bitowe w <pliku crtdbg.h>.

Tryb raportu Plik raportu _CrtDbgReport, _CrtDbgReportW zachowanie
_CRTDBG_MODE_DEBUG Nie dotyczy Zapisuje komunikat przy użyciu interfejsu API systemu Windows OutputDebugString .
_CRTDBG_MODE_WNDW Nie dotyczy Wywołuje interfejs API systemu Windows MessageBox w celu utworzenia pola komunikatu w celu wyświetlenia komunikatu wraz z przyciskami Przerwanie, Ponów próbę i Ignoruj . Jeśli użytkownik wybierze opcję Przerwanie_CrtDbgReport lub _CrtDbgReport natychmiast przerywa. Jeśli użytkownik wybierze pozycję Ponów próbę, zwraca wartość 1. Jeśli użytkownik wybierze pozycję Ignoruj, wykonanie będzie kontynuowane i _CrtDbgReport_CrtDbgReportW zwracane 0. Wybranie opcji Ignoruj , gdy istnieje warunek błędu, często powoduje niezdefiniowane zachowanie.
_CRTDBG_MODE_FILE __HFILE Zapisuje komunikat do dostarczonego HANDLEprzez użytkownika , przy użyciu interfejsu API systemu Windows WriteFile i nie weryfikuje poprawności dojścia do pliku. Aplikacja jest odpowiedzialna za otwarcie pliku raportu i przekazanie prawidłowego dojścia do pliku.
_CRTDBG_MODE_FILE _CRTDBG_FILE_STDERR Zapisuje komunikat w pliku stderr.
_CRTDBG_MODE_FILE _CRTDBG_FILE_STDOUT Zapisuje komunikat w pliku stdout.

Raport można wysłać do jednego, dwóch lub trzech miejsc docelowych lub do żadnego miejsca docelowego w ogóle. Aby uzyskać więcej informacji na temat określania trybu raportu lub trybów i pliku raportu, zobacz _CrtSetReportMode funkcje i _CrtSetReportFile . Aby uzyskać więcej informacji na temat używania makr debugowania i funkcji raportowania, zobacz Makra do raportowania.

Jeśli aplikacja potrzebuje większej elastyczności niż zapewniana przez _CrtDbgReport program i _CrtDbgReportW, możesz napisać własną funkcję raportowania i podłączyć ją do mechanizmu raportowania biblioteki czasu wykonywania języka C przy użyciu _CrtSetReportHook funkcji .

Wymagania

Procedura Wymagany nagłówek
_CrtDbgReport <Crtdbg.h>
_CrtDbgReportW <Crtdbg.h>

_CrtDbgReport i _CrtDbgReportW są rozszerzeniami firmy Microsoft. Aby uzyskać więcej informacji, zobacz Zgodność.

Biblioteki

Debugowanie tylko wersji bibliotek czasu wykonywania języka C.

Przykład

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

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

Zobacz crt_dbg2 przykład zmiany funkcji raportu.

Zobacz też

Procedury debugowania
_CrtSetReportMode
_CrtSetReportFile
printf, _printf_l, wprintf, _wprintf_l
_DEBUG