Share via


디버그 루틴

C 런타임 라이브러리의 디버그 버전은 개발자에게 디버깅 프로그램을 쉽게하고 수 많은 진단 서비스를 제공합니다.

  • 디버깅을 하는 동안 직접 런타임 함수를 한 단계씩 실행합니다.

  • 어설션, 오류 및 예외를 확인합니다.

  • 힙 할당을 추적하고 메모리 누수를 방지합니다.

  • 사용자에게 디버그 메시지를 보고합니다.

이러한 루틴을 사용하려면 _DEBUG 플래그를 정의해야 합니다. 이 모든 루틴은 모든 응용 프로그램의 정식 버전 빌드에 아무 작업도 수행하지 않습니다. 새 디버그 루틴을 사용하는 방법에 대한 자세한 내용은 CRT 디버깅 기술을 참조 하십시오.

C 런타임 라이브러리 루틴의 버전을 디버그합니다.

루틴

기능

해당 .NET Framework

_ASSERT

식을 계산하고 결과가 FALSE일 경우 디버그 보고서를 생성합니다.

System::Diagnostics::Debug:: 어설션

_ASSERTE

_ASSERT 와 유사하지만 생성된 보고서에 오류가 발생한 식을 포함합니다.

System::Diagnostics::Debug:: 어설션

_CrtCheckMemory

디버그 힙에 할당된 메모리 블록의 무결성 확인합니다.

System::Diagnostics::PerformanceCounter

_CrtDbgBreak

중단점을 설정합니다.

해당 사항 없음. 표준 C 함수를 호출하려면 PInvoke를 사용합니다. 자세한 내용은 플랫폼 호출 예제를 참조하십시오.

_CrtDbgReport, _CrtDbgReportW

사용자 메시지와 함께 디버그 보고서를 생성하고 세 가능한 대상에게 보고서를 보냅니다.

System::Diagnostics::Debug::Write, System::Diagnostics::Debug::Writeline, System::Diagnostics::Debug::WriteIf, System::Diagnostics::Debug::WriteLineIf

_CrtDoForAllClientObjects

힙의 모든 _CLIENT_BLOCK 형식에 대해 응용 프로그램에서 제공하는 함수를 호출합니다.

해당 사항 없음. 표준 C 함수를 호출하려면 PInvoke를 사용합니다. 자세한 내용은 플랫폼 호출 예제를 참조하십시오.

_CrtDumpMemoryLeaks

중요한 메모리의 누수가 발생 하는 경우 디버그 힙의 모든 메모리 블록을 덤프합니다.

해당 사항 없음. 표준 C 함수를 호출하려면 PInvoke를 사용합니다. 자세한 내용은 플랫폼 호출 예제를 참조하십시오.

_CrtIsMemoryBlock

올바른 디버그 힙 블록 형식 식별자가 있는지, 지정된 메모리 블록이 로컬 힙에 있는지 확인하십시오.

해당 사항 없음. 표준 C 함수를 호출하려면 PInvoke를 사용합니다. 자세한 내용은 플랫폼 호출 예제를 참조하십시오.

_CrtIsValidHeapPointer

로컬 힙에 대한 지정된 포인터인지 확인합니다.

해당 사항 없음. 표준 C 함수를 호출하려면 PInvoke를 사용합니다. 자세한 내용은 플랫폼 호출 예제를 참조하십시오.

_CrtIsValidPointer

지정한 메모리 범위가 읽기 및 쓰기에 대해 유효한지 확인합니다.

해당 사항 없음. 표준 C 함수를 호출하려면 PInvoke를 사용합니다. 자세한 내용은 플랫폼 호출 예제를 참조하십시오.

_CrtMemCheckpoint

디버그 힙의 현재 상태를 가져오고 응용 프로그램에서 제공하는 _CrtMemState 구조에 저장합니다.

해당 사항 없음. 표준 C 함수를 호출하려면 PInvoke를 사용합니다. 자세한 내용은 플랫폼 호출 예제를 참조하십시오.

_CrtMemDifference

중요한 차이점에 대한 두 가지 메모리 상태를 비교 하고 결과를 반환합니다.

해당 사항 없음. 표준 C 함수를 호출하려면 PInvoke를 사용합니다. 자세한 내용은 플랫폼 호출 예제를 참조하십시오.

_CrtMemDumpAllObjectsSince

프로그램 실행의 시작 부분에서 지정한 검사점 찍은 후 힙 또는 개체에 대한 정보를 덤프합니다.

해당 사항 없음. 표준 C 함수를 호출하려면 PInvoke를 사용합니다. 자세한 내용은 플랫폼 호출 예제를 참조하십시오.

_CrtMemDumpStatistics

사용자가 읽을 수 있는 형식으로 지정된 메모리 상태에 대한 디버그 헤더 정보를 덤프합니다.

System::Diagnostics::PerformanceCounter

_CrtReportBlockType

지정된 디버그 힙 블록 포인터와 관련된 블록 형식/하위 형식을 반환합니다.

해당 사항 없음. 표준 C 함수를 호출하려면 PInvoke를 사용합니다. 자세한 내용은 플랫폼 호출 예제를 참조하십시오.

_CrtSetAllocHook

C 런타임 디버그 메모리 할당 프로세스에 연결하여 클라이언트 정의 할당 함수를 설치합니다.

해당 사항 없음. 표준 C 함수를 호출하려면 PInvoke를 사용합니다. 자세한 내용은 플랫폼 호출 예제를 참조하십시오.

_CrtSetBreakAlloc

지정된 개체 할당 순서 번호에 중단점을 설정합니다.

해당 사항 없음. 표준 C 함수를 호출하려면 PInvoke를 사용합니다. 자세한 내용은 플랫폼 호출 예제를 참조하십시오.

_CrtSetDbgFlag

해당 _crtDbgFlag 의 상태를 수정하거나 검색하여 디버그 힙 관리자의 할당 동작을 제어합니다.

해당 사항 없음. 표준 C 함수를 호출하려면 PInvoke를 사용합니다. 자세한 내용은 플랫폼 호출 예제를 참조하십시오.

_CrtSetDumpClient

_CLIENT_BLOCK 형식 메모리 블록을 덤프하기위해 디버그 덤프 함수를 호출할 때마다 호출되는 응용 프로그램 정의 함수를 설치합니다.

해당 사항 없음. 표준 C 함수를 호출하려면 PInvoke를 사용합니다. 자세한 내용은 플랫폼 호출 예제를 참조하십시오.

_CrtSetReportFile

_CrtDbgReport의 특정 보고서 형식에 대한 대상으로 사용되는 파일 또는 스트림을 확인합니다.

해당 사항 없음. 표준 C 함수를 호출하려면 PInvoke를 사용합니다. 자세한 내용은 플랫폼 호출 예제를 참조하십시오.

_CrtSetReportHook

C 런타임 디버그 보고 프로세스에 연결하여 클라이언트 정의 보고 함수를 설치합니다.

해당 사항 없음. 표준 C 함수를 호출하려면 PInvoke를 사용합니다. 자세한 내용은 플랫폼 호출 예제를 참조하십시오.

_CrtSetReportHook2, _CrtSetReportHookW2

C 런타임 디버그 보고 프로세스에 연결하여 클라이언트 정의 보고 함수를 설치하거나 제거합니다.

해당 사항 없음. 표준 C 함수를 호출하려면 PInvoke를 사용합니다. 자세한 내용은 플랫폼 호출 예제를 참조하십시오.

_CrtSetReportMode

_CrtDbgReport에 의해 생성된 특정 보고서 형식에 대한 일반적인 대상을 지정합니다.

해당 사항 없음. 표준 C 함수를 호출하려면 PInvoke를 사용합니다. 자세한 내용은 플랫폼 호출 예제를 참조하십시오.

_RPT[0,1,2,3,4]

형식 문자열과 여러 개의 인수와 함께 _CrtDbgReport 호출하여 디버그 보고서를 생성하여 응용 프로그램의 진행률을 추적합니다. 원본 파일 및 줄 번호 정보를 제공합니다.

해당 사항 없음. 표준 C 함수를 호출하려면 PInvoke를 사용합니다. 자세한 내용은 플랫폼 호출 예제를 참조하십시오.

_RPTF[0,1,2,3,4]

_RPTn 와 유사하지만 보고서 요청이 발생하는 줄번호와 소스 파일 이름을 제공합니다.

해당 사항 없음. 표준 C 함수를 호출하려면 PInvoke를 사용합니다. 자세한 내용은 플랫폼 호출 예제를 참조하십시오.

_calloc_dbg

디버깅 헤더의 추가 공간을 사용하거나 버퍼를 덮어써서 힙에서 지정된 메모리 블록의 수를 할당합니다.

해당 사항 없음. 표준 C 함수를 호출하려면 PInvoke를 사용합니다. 자세한 내용은 플랫폼 호출 예제를 참조하십시오.

_expand_dbg

블록 크기를 확장 또는 축소하여 지정된 힙 메모리의 블록의 크기를 조절합니다.

해당 사항 없음. 표준 C 함수를 호출하려면 PInvoke를 사용합니다. 자세한 내용은 플랫폼 호출 예제를 참조하십시오.

_free_dbg

힙에서 메모리 블록을 해제합니다.

해당 사항 없음. 표준 C 함수를 호출하려면 PInvoke를 사용합니다. 자세한 내용은 플랫폼 호출 예제를 참조하십시오.

_fullpath_dbg, _wfullpath_dbg

지정된 상대 경로 이름의 절대 경로나 전체 경로 이름을 만들고, _malloc_dbg을 사용하여 메모리를 할당할 수 있습니다.

System::IO::File::Create

_getcwd_dbg, _wgetcwd_dbg

현재 작업 디렉터리를 얻고, _malloc_dbg를 사용하여 메모리를 할당할 수 있습니다.

해당 사항 없음. 표준 C 함수를 호출하려면 PInvoke를 사용합니다. 자세한 내용은 플랫폼 호출 예제를 참조하십시오.

_malloc_dbg

디버깅 헤더의 추가 공간을 사용하거나 버퍼를 덮어써서 힙에서 메모리의 블록을 할당합니다.

해당 사항 없음. 표준 C 함수를 호출하려면 PInvoke를 사용합니다. 자세한 내용은 플랫폼 호출 예제를 참조하십시오.

_msize_dbg

힙에서 메모리 블록의 크기를 계산합니다.

해당 사항 없음. 표준 C 함수를 호출하려면 PInvoke를 사용합니다. 자세한 내용은 플랫폼 호출 예제를 참조하십시오.

_realloc_dbg

블록의 크기를 조정하거나 이동하여 지정된 힙의 메모리 블록 할당합니다.

해당 사항 없음. 표준 C 함수를 호출하려면 PInvoke를 사용합니다. 자세한 내용은 플랫폼 호출 예제를 참조하십시오.

_strdup_dbg, _wcsdup_dbg

문자열을 복제하고, _malloc_dbg를 사용하여 메모리를 할당할 수 있습니다.

System::String::Clone

_tempnam_dbg, _wtempnam_dbg

임시 파일을 만드는 데 사용할 수 있는 이름을 생성하고, _malloc_dbg를 사용하여 메모리를 할당할 수 있습니다.

해당 사항 없음. 표준 C 함수를 호출하려면 PInvoke를 사용합니다. 자세한 내용은 플랫폼 호출 예제를 참조하십시오.

디버그 루틴은 디버깅 하는 동안 대부분의 다른 C 런타임 루틴에 대한 소스 코드를 통해 단계별로 사용할 수 있습니다. 그러나, Microsoft는 일부 기술을 독점하는 것으로 간주하여, 이러한 루틴에 대한 소스 코드는 제공하지 않습니다. 이러한 루틴 대부분은 예외 처리 또는 부동 소수점 처리 그룹에 속해 있지만 몇 가지 다른 사용자도 포함됩니다. 다음 표에서는 이러한 루틴들을 보여줍니다.

소스 코드 형태로 제공되지 않는 C 런타임 루틴

acos, acosf, acosl

_fpclass

_nextafter

asin

_fpieee_flt

pow

atan, atan2

_fpreset

printf, _printf_l, wprintf, _wprintf_l, printf_s, _printf_s_l, wprintf_s, _wprintf_s_l*

_cabs

frexp

_scalb

ceil

_hypot

scanf, _scanf_l, wscanf, _wscanf_l, scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l*

_chgsign, _chgsignf, _chgsignl

_isnan

setjmp

_clear87, _clearfp

_j0

sin

_control87, _controlfp, __control87_2

_j1

sinh

copysign, copysignf, copysignl, _copysign, _copysignf, _copysignl

_jn

sqrt

cos

ldexp

_status87, _statusfp

cosh

log

tan

Exp

log10

tanh

fabs

_logb

_y0

_finite

longjmp

_y1

floor

_matherr

_yn

fmod

modf

 

* 소스 코드를이 루틴들을 사용할 수 있지만 소스 코드가 제공 되지 않는 다른 루틴에 대한 내부 호출을 만듭니다.

일부 C 런타임 함수 및 c + + 연산자는 응용 프로그램의 디버그 빌드를 호출할 때 다르게 동작합니다. (응용 프로그램의 디버그 빌드는 _DEBUG 플래그를 정의하거나 C 런타임 라이브러리의 디버그 버전과 연결하여 수행할 수 있습니다.) 동작의 차이는 일반적으로 디버깅 프로세스를 지원하는 루틴에 의해 제공된 정보 또는 추가 기능을 구성합니다. 다음 표에서는 이러한 루틴들을 보여줍니다.

응용 프로그램의 빌드 디버그에서 다르게 작동하는 루틴

C 중단 루틴

C++ delete 연산자

C assert 루틴

C++ new 연산자

참고 항목

참조

범주별 런타임 루틴

런타임 오류 검사