디버그 루틴Debug routines

C 런타임 라이브러리의 디버그 버전은 디버깅 프로그램을 더 쉽게 만들고 개발자가 다음 작업을 수행할 수 있도록 하는 많은 진단 서비스를 제공합니다.The debug version of the C runtime library supplies many diagnostic services that make debugging programs easier and allow developers to:

  • 디버그하는 동안 런타임 함수에 대해 직접 한 단계씩 코드 실행Step directly into run-time functions during debugging

  • 어설션, 오류 및 예외 해결Resolve assertions, errors, and exceptions

  • 힙 할당 추적 및 메모리 누수 방지Trace heap allocations and prevent memory leaks

  • 사용자에게 디버그 메시지 보고Report debug messages to the user

C 런타임 라이브러리 루틴의 디버그 버전Debug versions of the C runtime library routines

이러한 루틴을 사용하려면 _DEBUG 플래그를 정의해야 합니다.To use these routines, the _DEBUG flag must be defined. 이러한 루틴은 모두 응용 프로그램의 정품 빌드에서 아무 작업도 하지 않습니다.All of these routines do nothing in a retail build of an application. 새 디버그 루틴을 사용하는 방법에 대한 자세한 내용은 CRT 디버깅 기술을 참조하세요.For more information on how to use the new debug routines, see CRT Debugging Techniques.

루틴에서 반환된 값Routine 기능Use
_ASSERT_ASSERT 식을 계산하고 결과가 FALSE인 경우 디버그 보고서를 생성합니다.Evaluate an expression and generates a debug report when the result is FALSE
_ASSERTE_ASSERTE _ASSERT와 비슷하지만 생성된 보고서에 실패한 식을 포함합니다.Similar to _ASSERT, but includes the failed expression in the generated report
_CrtCheckMemory_CrtCheckMemory 디버그 힙에서 할당된 메모리 블록의 무결성을 확인합니다.Confirm the integrity of the memory blocks allocated on the debug heap
_CrtDbgBreak_CrtDbgBreak 중단점을 설정합니다.Sets a break point.
_CrtDbgReport, _CrtDbgReportW_CrtDbgReport, _CrtDbgReportW 사용자 메시지가 포함된 디버그 보고서를 생성하고 이 보고서를 가능한 대상 3개로 보냅니다.Generate a debug report with a user message and send the report to three possible destinations
_CrtDoForAllClientObjects_CrtDoForAllClientObjects 힙의 모든 _CLIENT_BLOCK형식에 대한 응용 프로그램 제공 함수를 호출합니다.Call an application-supplied function for all _CLIENT_BLOCK types on the heap
_CrtDumpMemoryLeaks_CrtDumpMemoryLeaks 상당한 메모리 누수가 발생한 경우 디버그 힙의 모든 메모리 블록을 덤프합니다.Dump all of the memory blocks on the debug heap when a significant memory leak has occurred
_CrtIsMemoryBlock_CrtIsMemoryBlock 지정된 메모리 블록이 로컬 힙 내에 있고 유효한 디버그 힙 블록 형식 식별자를 포함하는지 확인합니다.Verify that a specified memory block is located within the local heap and that it has a valid debug heap block type identifier
_CrtIsValidHeapPointer_CrtIsValidHeapPointer 지정된 포인터가 로컬 힙에 있는지 확인합니다.Verifies that a specified pointer is in the local heap
_CrtIsValidPointer_CrtIsValidPointer 지정된 메모리 범위가 읽기 및 쓰기에 적합한지 확인합니다.Verify that a specified memory range is valid for reading and writing
_CrtMemCheckpoint_CrtMemCheckpoint 디버그 힙의 현재 상태를 가져오고, 응용 프로그램 제공 _CrtMemState 구조체에 저장합니다.Obtain the current state of the debug heap and store it in an application-supplied _CrtMemState structure
_CrtMemDifference_CrtMemDifference 두 개의 메모리 상태에 큰 차이가 있는지 비교하고 결과를 반환합니다.Compare two memory states for significant differences and return the results
_CrtMemDumpAllObjectsSince_CrtMemDumpAllObjectsSince 지정된 검사점이 사용된 이후 또는 프로그램 실행 시작부터 힙에 있는 개체에 대한 정보를 덤프합니다.Dump information about objects on the heap since a specified checkpoint was taken or from the start of program execution
_CrtMemDumpStatistics_CrtMemDumpStatistics 지정된 메모리 상태에 대한 디버그 헤더 정보를 사용자가 읽을 수 있는 형식으로 덤프합니다.Dump the debug header information for a specified memory state in a user-readable form
_CrtReportBlockType_CrtReportBlockType 지정된 디버그 힙 블록 포인터와 연결된 블록 형식/하위 형식을 반환합니다.Returns the block type/subtype associated with a given debug heap block pointer.
_CrtSetAllocHook_CrtSetAllocHook 클라이언트 정의 할당 함수를 C 런타임 디버그 메모리 할당 프로세스에 후크하여 함수를 설치합니다.Install a client-defined allocation function by hooking it into the C run-time debug memory allocation process
_CrtSetBreakAlloc_CrtSetBreakAlloc 지정된 개체 할당 순서 번호에 대한 중단점을 설정합니다.Set a breakpoint on a specified object allocation order number
_CrtSetDbgFlag_CrtSetDbgFlag 디버그 힙 관리자의 할당 동작을 제어하기 위해 _crtDbgFlag 플래그의 상태를 검색하거나 수정합니다.Retrieve or modify the state of the _crtDbgFlag flag to control the allocation behavior of the debug heap manager
_CrtSetDumpClient_CrtSetDumpClient _CLIENT_BLOCK 형식 메모리 블록을 덤프하기 위해 디버그 덤프 함수가 호출될 때마다 호출되는 응용 프로그램 정의 함수를 설치합니다.Install an application-defined function that is called every time a debug dump function is called to dump _CLIENT_BLOCK type memory blocks
_CrtSetReportFile_CrtSetReportFile _CrtDbgReport에서 특정 보고서 종류의 대상으로 사용할 파일 또는 스트림을 확인합니다.Identify the file or stream to be used as a destination for a specific report type by _CrtDbgReport
_CrtSetReportHook_CrtSetReportHook 클라이언트 정의 보고 함수를 C 런타임 디버그 보고 프로세스에 후크하여 해당 함수를 설치합니다.Install a client-defined reporting function by hooking it into the C run-time debug reporting process
_CrtSetReportHook2, _CrtSetReportHookW2_CrtSetReportHook2, _CrtSetReportHookW2 클라이언트 정의 보고 함수를 C 런타임 디버그 보고 프로세스에 후크하여 해당 함수를 설치하거나 제거합니다.Installs or uninstalls a client-defined reporting function by hooking it into the C run-time debug reporting process.
_CrtSetReportMode_CrtSetReportMode _CrtDbgReport에서 생성하는 특정 보고서 종류에 대한 일반 대상을 지정합니다.Specify the general destination(s) for a specific report type generated by _CrtDbgReport
_RPT[0,1,2,3,4]_RPT[0,1,2,3,4] 서식 문자열 및 가변 개수의 인수로 _CrtDbgReport를 호출하여 디버그 보고서를 생성함으로써 응용 프로그램의 진행 상황을 추적합니다.Track the application's progress by generating a debug report by calling _CrtDbgReport with a format string and a variable number of arguments. 소스 파일 및 줄 번호 정보를 제공합니다.Provides no source file and line number information.
_RPTF[0,1,2,3,4]_RPTF[0,1,2,3,4] _RPTn 매크로와 비슷하지만 보고서 요청을 시작한 소스 파일 이름과 줄 번호를 제공합니다.Similar to the _RPTn macros, but provides the source file name and line number where the report request originated
_calloc_dbg_calloc_dbg 디버깅 헤더에 대한 추가 공간이 있는 힙에서 지정된 개수의 메모리 블록을 할당하고 버퍼를 덮어씁니다.Allocate a specified number of memory blocks on the heap with additional space for a debugging header and overwrite buffers
_expand_dbg_expand_dbg 블록을 확장하거나 축소하여 힙에서 지정된 메모리 블록의 크기를 조정합니다.Resize a specified block of memory on the heap by expanding or contracting the block
_free_dbg_free_dbg 힙에서 메모리 블록을 해제합니다.Free a block of memory on the heap
_fullpath_dbg, _wfullpath_dbg_fullpath_dbg, _wfullpath_dbg 메모리를 할당하는 _malloc_dbg를 사용하여 지정된 상대 경로 이름의 절대 또는 전체 경로 이름을 만듭니다.Create an absolute or full path name for the specified relative path name, using _malloc_dbg to allocate memory.
_getcwd_dbg, _wgetcwd_dbg_getcwd_dbg, _wgetcwd_dbg 메모리를 할당하는 _malloc_dbg를 사용하여 현재 작업 디렉터리를 가져옵니다.Get the current working directory, using _malloc_dbg to allocate memory.
_malloc_dbg_malloc_dbg 디버깅 헤더에 대한 추가 공간이 있는 힙에서 메모리 블록을 할당하고 버퍼를 덮어씁니다.Allocate a block of memory on the heap with additional space for a debugging header and overwrite buffers
_msize_dbg_msize_dbg 힙에서 메모리 블록의 크기를 계산합니다.Calculate the size of a block of memory on the heap
_realloc_dbg_realloc_dbg 블록을 이동하거나 크기를 조정하여 힙에서 지정된 메모리 블록을 재할당합니다.Reallocate a specified block of memory on the heap by moving and/or resizing the block
_strdup_dbg, _wcsdup_dbg_strdup_dbg, _wcsdup_dbg 메모리를 할당하는 _malloc_dbg를 사용하여 문자열을 복제합니다.Duplicates a string, using _malloc_dbg to allocate memory.
_tempnam_dbg, _wtempnam_dbg_tempnam_dbg, _wtempnam_dbg 메모리를 할당하는 _malloc_dbg를 사용하여 임시 파일을 만들 때 사용할 수 있는 이름을 생성합니다.Generate names you can use to create temporary files, using _malloc_dbg to allocate memory.

소스 코드 양식에서 사용할 수 없는 C 런타임 루틴C runtime routines that are not available in source code form

디버거를 사용하여 디버깅 프로세스 중에 대부분의 C 런타임 루틴에 대한 소스 코드를 단계별로 실행할 수 있습니다.The debugger can be used to step through the source code for most of the C runtime routines during the debugging process. 그러나 Microsoft에서는 일부 기술을 독점적인 것으로 간주하고 이러한 루틴의 하위 집합에 대한 소스 코드를 제공하지 않습니다.However, Microsoft considers some technology to be proprietary and, therefore, does not provide the source code for a subset of these routines. 이러한 루틴은 대부분 예외 처리 또는 부동 소수점 처리 그룹에 속하지만 몇몇 기타 루틴도 포함됩니다.Most of these routines belong to either the exception handling or floating-point processing groups, but a few others are included as well. 다음 표에 이러한 루틴이 나와 있습니다.The following table lists these routines.

acosacos acoshacosh asinasin
asinhasinh atan, atan2atan, atan2 atanhatanh
Bessel 함수Bessel functions _cabs_cabs ceilceil
_chgsign_chgsign _clear87, _clearfp_clear87, _clearfp _control87, _controlfp_control87, _controlfp
copysigncopysign coscos coshcosh
ExpExp fabsfabs _finite_finite
floorfloor fmodfmod _fpclass_fpclass
_fpieee_flt_fpieee_flt _fpreset_fpreset frexpfrexp
_hypot_hypot _isnan_isnan ldexpldexp
loglog _logb_logb log10log10
longjmplongjmp _matherr_matherr modfmodf
_nextafter_nextafter powpow printf_sprintf_s
printfprintf _scalb_scalb scanf_sscanf_s
scanfscanf setjmpsetjmp sinsin
sinhsinh sqrtsqrt _status87, _statusfp_status87, _statusfp
tantan tanhtanh

소스 코드는 대부분의 printfscanf 루틴에 사용할 수 있지만 소스 코드가 제공되지 않는 다른 루틴에 대한 내부 호출을 수행합니다.Although source code is available for most of the printf and scanf routines, they make an internal call to another routine for which source code is not provided.

응용 프로그램의 디버그 빌드에서 다르게 동작하는 루틴Routines that behave differently in a debug build of an application

응용 프로그램의 디버그 빌드에서 호출될 경우 일부 C 런타임 함수 및 C++ 연산자는 다르게 동작합니다.Some C run-time functions and C++ operators behave differently when called from a debug build of an application. 응용 프로그램의 디버그 빌드를 수행하려면 _DEBUG 플래그를 정의하거나 C 런타임 라이브러리의 디버그 버전과 연결해야 합니다. 동작 차이는 대개 디버깅 프로세스를 지원하기 위해 루틴에서 제공된 추가적인 기능이나 정보로 구성됩니다.(Note that a debug build of an application can be done by either defining the _DEBUG flag or by linking with a debug version of the C run-time library.) The behavioral differences usually consist of extra features or information provided by the routine to support the debugging process. 다음 표에 이러한 루틴이 나와 있습니다.The following table lists these routines.

C abort 루틴C abort routine C++ delete 연산자C++ delete operator
C assert 루틴C assert routine C++ new 연산자C++ new operator

참고 항목See also

범주별 유버니설 C 런타임 루틴Universal C runtime routines by category
런타임 오류 검사Run-Time Error Checking