_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
, lineNumber
및 moduleName
이 창에 표시되는 정보에 포함됩니다.
다음 테이블은 사용 가능한 보고서 모드 및 파일 선택 항목과 _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