2008년 9월 7일 일요일

유용한 디버깅툴들

1. DeviceTree
1. DeviceTree
kernel 에 등록된 device driver 의 정보를 표현한다.
device name, devObject address, attach device 정보

2. traceview
driver 의 WMI log 를 출력한다.

WMI log 를 driver 가 생성하기 위한 사전작업

1. GUID 를 만든다.
WINDDK\...\tool\other\genguid.exe 에서 registry type 으로 id 를 생성한다.

2. WPP_CONTROL_GUIDS 매크로를 정의한다.

3. makefile 에
RUN_WPP= $(sources) -km 과 C_DEFINES = $(C_DEFINES) -DEVENT_TRACING 을 적당한 위치에 추가 한다.





4. 아래의 코드가 WMI log 를 사용하는 .c 의 제일 위에 위치시킨다.

WMI log 발생을 위한 header 가 필요한데 이것은 DDK tool 에서 작성하여 .tmh file 로 만든다.

이것을 각 source 에서 가져다 쓸 수 있도록 한다.


#include




5. WMI log 초기화 : DriverEntry 에 WPP_INIT_TRACING(DriverObject, RegistryPath); 를 추가하고,
Unload 에 WPP_CLEANUP(DriverObject); 를 추가한다.




6. DoTraceMessage ( ) 을 이용하여 log 를 발생한다.

함수이름을 바꾸기를 원하면 Makefile 에 -func 에 대신사용할 함수이름을 지정한다.


RUN_WPP=$(SOURCES)\
-km \
-func:ToasterDebugPrint(LEVEL,MSG,...)

댓글 없음:

댓글 쓰기