_CrtDbgReport, _CrtDbgReportW
Generuje raport z debugowania wiadomości i wysyła raport do trzech możliwych docelowych (tylko wersja debugowania).
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
Report type: _CRT_WARN, _CRT_ERROR, and _CRT_ASSERT.filename
Wskaźnik do nazwy pliku źródłowego, gdzie wystąpił assert raportu lub NULL.linenumber
Numer w pliku źródłowym, gdzie wystąpił assert raportu lub NULL.moduleName
Wskaźnik, aby nazwa modułu (.exe lub .dll), gdzie wystąpił assert raportu.format
Wskaźnik kontroli format ciąg używany do tworzenia wiadomości użytkownika.argument
Podstawianie opcjonalne argumenty używane przez format.
Wartość zwracana
Dla wszystkich miejsc raportu _CrtDbgReport i _CrtDbgReportW zwraca –1, jeśli wystąpi błąd, a wartość 0, jeśli wystąpią błędy nie.Jednakże, gdy przeznaczenie raportu jest okno komunikatu debugowania i użytkownik kliknie Retry przycisku, funkcje te zwracają 1.Jeśli użytkownik kliknie Abort przycisk w oknie Debugowanie wiadomości te funkcje natychmiast przerwać i nie zwracać wartość.
_RPT, _RPTF debugowania wywołanie makra _CrtDbgReport do debugowania ich generowania raportów.Wersje szerokich znaków tych makr, jak również _ASSERT [E, _RPTWn i _RPTFWn, użyj _CrtDbgReportW do debugowania ich generowania raportów.Gdy _CrtDbgReport lub _CrtDbgReportW zwraca 1, te makra uruchomić debugera, pod warunkiem, że jest włączone debugowanie just-in-time (JIT).
Uwagi
_CrtDbgReporti _CrtDbgReportW można wysłać raport debugowania do trzech różnych miejsc docelowych: plik raportu programu debug, monitor debugowania ( Visual Studio debuger), lub w oknie wiadomości programu debug.Dwie funkcje konfiguracji, _CrtSetReportMode i _CrtSetReportFile, są używane do określania miejsca przeznaczenia lub miejsc docelowych dla każdego typu raportu.Funkcje te umożliwiają raportowania przeznaczenia lub miejsc docelowych dla każdego typu raportu oddzielnie będą kontrolowane.Na przykład określić, że możliwe jest reportType z _CRT_WARN jedynie być wysłane do monitora debugowania, podczas gdy reportType z _CRT_ASSERT przesyłane okno wiadomości debugowania i plik raportu przez użytkownika.
_CrtDbgReportWWersja szerokich znaków jest _CrtDbgReport.Wszystkie jego parametry wyjściowe i ciągu są w ciągach znaków wide; w przeciwnym razie jest taka sama, jak wersja znaków jednobajtowych.
_CrtDbgReporti _CrtDbgReportW utworzyć wiadomość użytkownika dla raportu debugowania podstawiając argumentn argumenty doformat ciąg znaków, za pomocą tej samej reguły zdefiniowane przez printf lub wprintf funkcji.Funkcje te następnie wygenerować raport debugowania i określenia miejsca przeznaczenia lub miejsca docelowe, na podstawie bieżącej tryby raportu, a plik zdefiniowany dla reportType.Jeśli raport jest wysyłana do debugowania okno komunikatu, filename, lineNumber, i moduleName znajdują się informacje wyświetlane w oknie.
W poniższej tabeli przedstawiono dostępne opcje trybu raportu lub trybów i pliku i Wynikowe zachowanie _CrtDbgReport i _CrtDbgReportW.Opcje te są zdefiniowane jako flag bitowych w Crtdbg.h.
Tryb raportu |
Plik raportu |
_CrtDbgReport, _CrtDbgReportW zachowanie |
---|---|---|
_CRTDBG_MODE_DEBUG |
Nie dotyczy |
Zapisuje komunikat do systemu Windows OutputDebugString interfejsu API. |
_CRTDBG_MODE_WNDW |
Nie dotyczy |
Wymaga systemu Windows MessageBox API do tworzenia okno komunikatu, aby wyświetlić wiadomość wraz z Abort, Retry, i Ignore przyciski.Jeśli użytkownik kliknie Abort, _CrtDbgReport lub _CrtDbgReport niezwłocznie przerywa.Jeśli użytkownik kliknie Retry, to zwraca wartość 1.Jeśli użytkownik kliknie Ignore, kontynuuje wykonywanie i _CrtDbgReport i _CrtDbgReportW zwraca wartość 0.Należy zauważyć, że kliknięcie Ignore podczas wystąpienia błędu istnieje często skutkuje "zachowanie niezdefiniowany." |
_CRTDBG_MODE_FILE |
__HFILE |
Zapisuje wiadomość do dostarczonych przez użytkownika HANDLE, przy użyciu systemu Windows WriteFile API i nie sprawdza prawidłowość dojście do pliku; aplikacja jest odpowiedzialna za otwarcie pliku raportu i przekazując uchwyt prawidłowy plik. |
_CRTDBG_MODE_FILE |
_CRTDBG_FILE_STDERR |
Zapisuje wiadomość do stderr. |
_CRTDBG_MODE_FILE |
_CRTDBG_FILE_STDOUT |
Zapisuje wiadomość do stdout. |
Sprawozdania mogą być wysyłane do jednego, dwóch lub trzech miejsc docelowych lub brak miejsca docelowego w ogóle.Aby uzyskać więcej informacji na temat określania trybu raportu lub trybów i plik raportu, zobacz _CrtSetReportMode i _CrtSetReportFile funkcji.Aby uzyskać więcej informacji dotyczących korzystania z makr debugowania i funkcje raportowania, zobacz Za pomocą makra dla weryfikacji i sprawozdawczości.
Jeśli aplikacja wymaga większej elastyczności niż dostarczone przez _CrtDbgReport i _CrtDbgReportW, można napisać funkcję swoje własne, raportowania i podłącz go do biblioteki uruchomieniowej C, mechanizm raportowania za pomocą _CrtSetReportHook funkcji.
Wymagania
Rozpoczęto wykonywanie procedury |
Wymaganego nagłówka |
---|---|
_CrtDbgReport |
<crtdbg.h> |
_CrtDbgReportW |
<crtdbg.h> |
Informacji dotyczących zgodności, zobacz zgodności we wprowadzeniu.
Biblioteki
Debug wersje biblioteki uruchomieniowej c tylko.
Przykład
// crt_crtdbgreport.c
#include <crtdbg.h>
int main() {
#ifdef _DEBUG
CrtDbgReport(_CRT_ASSERT, NULL, NULL, "some module", NULL);
#endif
}
Zobacz crt_dbg2 na przykład zmienić funkcję raportu.