Direct2D 디버그 계층 개요
Direct2D 디버그 계층은 런타임 애플리케이션 오류를 최소화하기 위한 디자인 타임 디버그 메시지를 제공합니다. 이 개요에서는 Direct2D 디버그 계층의 기본 사항을 설명합니다. 기본 Direct2D 애플리케이션을 만드는 데 익숙하다고 가정합니다.
이 개요에는 다음 섹션이 포함되어 있습니다.
Direct2D 디버그 계층이란?
direct2D 디버그 계층은 d2d1debug.dll 라는 자체 DLL의 Direct2D와 별도로 구현되며 Direct2D 함수를 정확하게 사용할 수 있도록 디버그 메시지를 제공합니다. 디버그 메시지는 종종 잘못된 매개 변수(Direct3D 관련일 수 있음), 잘못된 리소스, 스레딩 위반 및 클립이 충분할 때 레이어 사용과 같은 성능 문제와 같은 API 계약 위반으로 인해 발생합니다. 디버그 계층에서 추적되는 정보의 양을 지정하려면 정보, 경고 및 오류의 세 가지 디버그 수준 중 하나를 지정할 수 있습니다. 및 수준 오류 메시지는 디버그에 도움이 되도록 중단점을 트리거합니다.
Direct2D 디버그 계층 설치
디버그 계층 설치에 대한 지침은 Direct2D 디버그 계층 설치를 참조하세요.
디버그 계층 사용
애플리케이션에서 디버그 계층을 사용하도록 설정하려면 D2D1CreateFactory 함수를 사용하여 팩터리를 만들 때 D2D1_DEBUG_LEVEL_NONE 이외의 D2D1_DEBUG_LEVEL값을 지정합니다.
참고
Direct2D 디버그 계층을 사용하도록 설정하면 색 컨텍스트를 설정할 때 Direct2D 색 관리 효과(CLSID_D2D1ColorManagement)가 액세스 위반을 일으킬 수 있습니다. 해결 방법은 색 관리 효과를 사용할 때 디버그 계층을 사용하지 않도록 설정하는 것입니다.
팩터리에 디버그 계층을 사용하도록 설정하면 해당 팩터리에서 만든 모든 개체에 대한 디버깅 정보도 사용할 수 있습니다.
다음 예제에서는 애플리케이션이 DEBUG 빌드 구성을 위해 컴파일될 때 팩터리에 대해 디버그 계층을 사용하도록 설정합니다.
// If you set the options.debugLevel to D2D1_DEBUG_LEVEL_NONE,
// the debug layer is not enabled.
#if defined(DEBUG) || defined(_DEBUG)
D2D1_FACTORY_OPTIONS options;
options.debugLevel = D2D1_DEBUG_LEVEL_INFORMATION;
hr = D2D1CreateFactory(
D2D1_FACTORY_TYPE_SINGLE_THREADED,
options,
&m_pD2DFactory
);
#else
hr = D2D1CreateFactory(
D2D1_FACTORY_TYPE_SINGLE_THREADED,
&m_pD2DFactory
);
#endif
참고
팩터리 옵션을 지정하지 않거나 디버그 수준 "none"을 지정하면 디버그 계층이 호출되지 않습니다. 디버그 계층은 애플리케이션의 릴리스 버전에서 활성화되어서는 안 됩니다.
다음 섹션에서는 D2D1_DEBUG_LEVEL 열거형에 정의된 다양한 디버그 수준에 대해 설명합니다.
디버그 수준
D2D1_DEBUG_LEVEL 열거형은 D2D1_DEBUG_LEVEL_ERROR(오류), D2D1_DEBUG_LEVEL_WARNING(경고) 및 D2D1_DEBUG_LEVEL_INFORMATION(정보)의 세 가지 디버그 수준을 지정합니다. 이러한 수준은 다음과 같이 해석됩니다.
오류: Direct2D는 심각한 오류 메시지를 디버그 계층으로 보냅니다. 예를 들어 스레딩 제약 조건을 위반하면 심각한 오류가 발생합니다.
경고: Direct2D는 이러한 메시지를 해결할 수 있도록 오류 메시지와 경고를 디버그 계층으로 보냅니다.
정보: Direct2D는 오류 메시지, 경고 및 추가 진단 정보를 디버그 계층으로 보냅니다. 예를 들어 성능 향상 메시지는 이 디버그 수준에서 전송됩니다.
D2D1_DEBUG_LEVEL_NONE 값(없음)은 Direct2D가 디버깅 출력을 제공하지 않음을 나타냅니다.
관련 항목