_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_ERROR
i _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 format
program .
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
_RPTW
i _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.
_CrtDbgReportW
jest 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, filename
element , lineNumber
i 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 HANDLE przez 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