DirectShow DirectShow 레퍼런스 DirectShow base class 디버그 유틸리티 디버그 출력 함수   [목차열람] [주소복사] [슬롯비우기]
디버그 출력 함수
 
Microsoft DirectX 9.0

디버그 출력 함수

Microsoft® DirectShow® base class는 디버그 정보 표시용의 몇개의 매크로를 제공한다.

요건

헤더 : Wxdebug.h 내에서 선언해, Streams.h 를 인클루드 한다.

라이브러리 : Strmbase.lib (리테일 빌드) 또는 Strmbasd.lib (디버그 빌드)를 사용한다.

함수 설명
DbgCheckModuleLevel 주어진 메시지 타입과 레벨로 로깅이 가능한가 어떤가를 체크한다.
DbgDumpObjectRegister 액티브한 개체에 대한 정보를 표시한다.
DbgInitialise 디버그 라이브러리를 초기화한다.
DbgLog 지정한 타입과 레벨로 로깅 가능한 경우는, 디버그 출력 위치에 캐릭터 라인을 보낸다.
DbgOutString 디버그 출력 위치에 캐릭터 라인을 보낸다.
DbgSetModuleLevel 1 개 또는 복수의 메시지 타입의 로깅 레벨을 설정한다.
DbgTerminate 디버그 라이브러리를 클린 업 한다.
DisplayType 미디어 타입에 대한 정보를 디버그 출력 위치에 보낸다.
DumpGraph 필터 그래프에 대한 정보를 디버그 출력 위치에 보낸다.
GuidNames Uuids.h 로 정의되고 있는 GUID 를 나타내는 캐릭터 라인을 포함한 글로벌 배열.
NAME 디버그 전용 캐릭터 라인을 생성한다.
NOTE 디버그 출력 위치에 캐릭터 라인을 보낸다.
REMIND 컴파일시에 주의를 생성한다.

주의

DirectShow 의 디버그 환경은, 특정의 종류의 디버그 정보만을 표시하도록(듯이) 설정할 수 있다. 이 기능으로, 문제를 코드내의 특정의 범위에 좁힐 수가 있다. DirectShow 는 이하의 표에 나타나는 몇개의 메시지 타입을 정의한다.

설명
LOG_ERROR 에러 통지.
LOG_LOCKING 크리티컬 섹션의 잠금과 언락.
LOG_MEMORY 메모리 할당과 개체의 생성 및 파기.
LOG_TIMING 타이밍과 퍼포먼스의 측정.
LOG_TRACE 일반적인 호출 트레이스.
CUSTOM1 ~ CUSTOM5 커스텀 디버그 메시지용으로 사용 가능.

DirectShow 디버그 로깅 함수는 각각, 메시지 타입과 로그 레벨을 지정한다. 디버그 메시지는, 그 메시지 타입의 현재의 디버그 레벨이, 로깅 함수로 지정한 레벨 이상의 경우만 표시된다. 그 이외의 경우, 메시지는 무시된다.

예를 들어 다음 코드는, LOG_TRACE 레벨이 3 이상의 경우에 "This is a debug message" 와 출력한다.

DbgLog((LOG_TRACE, 3, TEXT("This is a debug message")));

모든 모듈은 각 메시지 타입에 대해서 자신의 디버그 레벨을 설정할 수 있다. (모듈은 DLL 또는 실행 모듈이며, Microsoft® Win32® LoadLibrary 함수를 사용해 읽힌다. ) 모듈의 디버그 레벨은, 레지스트리의 다음의 키아래에 표시된다.

\HKEY_LOCAL_MACHINE\SOFTWARE\Debug\<Module Name>\<Message Type>

<Message Type> 는 메시지 타입으로부터 선두의 "LOG_" 를 취한 것이다. 예를 들어,LOCKING 는 LOG_LOCKING 메시지가 된다. 모듈이 읽히면 디버그 라이브러리는 모듈의 로깅 레벨을 레지스트리로부터 검색한다. 레지스트리 키가 없으면 디버그 라이브러리는 그것을 생성 한다.

모듈은 DbgSetModuleLevel 함수를 사용해, 자신의 레벨을 실행시로 설정할 수도 있다. 디버그 출력에 메시지를 보내려면 ,DbgLog 매크로를 호출하는 것. 다음의 예는 타입 LOG_TRACE 의 레벨 3 메시지를 생성 하고 있다 :

또, 이하의 레지스트리 키를 사용해, 글로벌 로깅 레벨을 지정할 수 있다.

\HKEY_LOCAL_MACHINE\SOFTWARE\Debug\GLOBAL\<Message Type>

디버그 라이브러리는, 글로벌 레벨과 모듈 레벨의 어느 쪽인지 비싼 (분)편을 사용한다.

디버그 출력 위치

디버그 출력 위치는 다른 레지스트리 키에 의해 정의되고 있다 :

\HKEY_LOCAL_MACHINE\SOFTWARE\Debug\<Module Name>\LogToFile

이 키의 값이 Console 의 경우는, 콘솔 윈도우에 출력된다. 이 값이 Deb, Deb, Debug, Debugger 또는 공백 캐릭터 라인의 경우는, 디버거 윈도우에 출력된다. 그 이외의 경우, 출력은 레지스트리 키로 지정된 파일에 써진다.

실행 모듈이 DirectShow 디버그 라이브러리를 사용하기 전에,DbgInitialise 함수를 호출해야 한다. 마지막으로,DbgTerminate 함수를 호출해야 한다. DLL 엔트리 포인트 (base class 라이브러리내에서 정의)가 자동적으로 이러한 함수를 호출하기 (위해)때문에, DLL 가 이것들을 호출할 필요는 없다.

↑TOP