다음을 통해 공유


_CrtDbgReport, _CrtDbgReportW

디버깅 메시지가 포함된 보고서를 생성하고 이 보고서를 가능한 대상 3개로 보냅니다(디버그 버전에만 해당).

구문

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

매개 변수

reportType
보고서 형식: _CRT_WARN, _CRT_ERROR_CRT_ASSERT

filename
어설션/보고서 또는 NULL이 발생한 소스 파일의 이름에 대한 포인터입니다.

lineNumber
assert/report 또는 NULL이 발생한 소스 파일의 줄 번호입니다.

moduleName
어설션 또는 보고서가 발생한 모듈(.exe 또는 .dll)의 이름에 대한 포인터입니다.

format
사용자 메시지를 만드는 데 사용되는 형식 컨트롤 문자열에 대한 포인터입니다.

argument
format에서 사용하는 선택적 대체 인수입니다.

반환 값

모든 보고서 대상에 대해 오류가 발생하면 -1을 _CrtDbgReport 반환하고 _CrtDbgReportW 오류가 발생하지 않으면 0을 반환합니다. 그러나 보고서 대상이 디버그 메시지 창이고 사용자가 다시 시도 단추를 선택하면 이러한 함수는 1을 반환합니다. 사용자가 메시지 디버그 창에서 중단 단추를 선택하면 이러한 함수는 즉시 중단되고 값을 반환하지 않습니다.

디버그 매크로는 _RPT디버그 보고서를 생성하기 위해 호출 _CrtDbgReport 합니다. _RPTF 이러한 매크로_ASSERTE_RPTW_ASSERT_RPTFW의 와이드 문자 버전은 디버그 보고서를 생성하는 데 사용됩니다._CrtDbgReportW _CrtDbgReport 1을 반환하거나 _CrtDbgReportW 반환하면 JIT(Just-In-Time) 디버깅을 사용하는 경우 이러한 매크로가 디버거를 시작합니다.

설명

_CrtDbgReport_CrtDbgReportW 디버그 보고서를 디버그 보고서 파일, 디버그 모니터(Visual Studio 디버거) 또는 디버그 메시지 창의 세 가지 대상으로 보낼 수 있습니다. 두 가지 구성 함수와 _CrtSetReportMode _CrtSetReportFile각 보고서 형식의 대상 또는 대상을 지정하는 데 사용됩니다. 이러한 함수를 사용하면 각 보고서 형식의 보고 대상을 개별적으로 제어할 수 있습니다. 예를 들어 디버그 메시지 창과 사용자 정의 보고서 파일 둘 다로 이동하면서 _CRT_ASSERT reportType 디버그 모니터로만 이동하도록 지정할 reportType _CRT_WARN 수 있습니다.

_CrtDbgReportW_CrtDbgReport의 와이드 문자 버전입니다. 모든 출력 및 문자열 매개 변수는 와이드 문자열에 있습니다. 그렇지 않으면 싱글 바이트 문자 버전과 동일합니다.

_CrtDbgReport또는 _CrtDbgReportW 함수에서 정의 printf wprintf 한 것과 동일한 규칙을 사용하여 인수를 문자열로 format 대체 argument[n] 하여 디버그 보고서에 대한 사용자 메시지를 만듭니다. 그런 다음 이러한 함수는 디버그 보고서를 생성하고 현재 보고서 모드와 reportType에 대해 정의된 파일을 기반으로 대상을 결정합니다. 보고서를 디버그 메시지 창으로 보내면 filename, lineNumbermoduleName이 창에 표시되는 정보에 포함됩니다.

다음 테이블은 사용 가능한 보고서 모드 및 파일 선택 항목과 _CrtDbgReport_CrtDbgReportW의 결과 동작을 보여줍니다. 이러한 옵션은 crtdbg.h>에서 <비트 플래그로 정의됩니다.

보고서 모드 보고서 파일 _CrtDbgReport, _CrtDbgReportW 동작
_CRTDBG_MODE_DEBUG 해당 없음 Windows OutputDebugString API를 사용하여 메시지를 씁니다.
_CRTDBG_MODE_WNDW 해당 없음 Windows MessageBox API를 호출하여 메시지 상자를 만들어 중단, 다시 시도 및 무시 단추와 함께 메시지를 표시합니다. 사용자가 중단_CrtDbgReport선택하거나 _CrtDbgReport 즉시 중단하는 경우 사용자가 재시도를 선택하면 1이 반환됩니다. 사용자가 무시를 선택하면 실행이 계속되고 _CrtDbgReport 0을 _CrtDbgReportW 반환합니다. 오류 조건이 있는 경우 무시선택하면 정의되지 않은 동작이 발생하는 경우가 많습니다.
_CRTDBG_MODE_FILE __HFILE Windows WriteFile API를 사용하여 사용자가 제공한 HANDLE메시지를 작성하고 파일 핸들의 유효성을 확인하지 않습니다. 애플리케이션은 보고서 파일을 열고 유효한 파일 핸들을 전달해야 합니다.
_CRTDBG_MODE_FILE _CRTDBG_FILE_STDERR stderr에 메시지를 씁니다.
_CRTDBG_MODE_FILE _CRTDBG_FILE_STDOUT stdout에 메시지를 씁니다.

보고서는 1개, 2개 또는 3개 대상으로 보내거나 아무 대상으로도 보내지 않을 수 있습니다. 보고서 모드 또는 모드 및 보고서 파일 지정에 대한 자세한 내용은 및 _CrtSetReportFile 함수를 _CrtSetReportMode 참조하세요. 디버그 매크로 및 보고 함수를 사용하는 방법에 대한 자세한 내용은 보고용 매크로를 참조하세요.

애플리케이션에서 제공하는 _CrtDbgReport _CrtDbgReportW것보다 더 많은 유연성이 필요한 경우 고유한 보고 함수를 작성하고 함수를 사용하여 _CrtSetReportHook C 런타임 라이브러리 보고 메커니즘에 연결할 수 있습니다.

요구 사항

루틴에서 반환된 값 필수 헤더
_CrtDbgReport <crtdbg.h>
_CrtDbgReportW <crtdbg.h>

_CrtDbgReport_CrtDbgReportW는 Microsoft 확장입니다. 자세한 내용은 호환성을 참조하세요.

라이브러리

C 런타임 라이브러리의 디버그 버전만 해당됩니다.

예시

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

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

보고서 함수를 변경하는 방법의 예제를 참조 crt_dbg2 하세요.

참고 항목

디버그 루틴
_CrtSetReportMode
_CrtSetReportFile
printf, _printf_l, wprintf_wprintf_l
_DEBUG