오전 11:13 2001-09-26
조경민 bro@shinbiro.com
WinDbg 사용법
--------------------------------------------------------------------
요약.
두대를 시리얼로 연결
타겟은 디버그 될 대상 : boot.ini 수정,리붓,드라이버 설치,UserApp실행
소스는 dbg_x86_3.0.20.0.exe 설치후 WinDbg로 디버그를 봄


시리얼 케이블로 두대의 컴퓨터를 COM1에 연결한다.

타겟 컴퓨터에
c:\\boot.ini에서 해당 OS의 옵션 뒤로 붙인다.
/debugport=COMX /baudrate=BaudRate 옵션을 더붙여서 다음처럼 만든다.
multi(0)disk(0)rdisk(0)partition(3)\WINDOWS="Microsoft Windows XP Professional" /fastdetect /debugport=COMX /baudrate=BaudRate
를 기입한 컴퓨터를 끄고 (타겟컴퓨터)

다른 소스컴퓨터에서 WinDbg의 File/Kernel Debug를 한후
COM : 1
baudRate : 19200
을 한다.



Opened \\.\com1

Microsoft (R) Windows Kernel Debugger  Version 3.0.0020.0
Copyright (c) Microsoft Corporation. All rights reserved.

Waiting to reconnect...
Connected to Windows XP 2526 x86 compatible target, ptr64 FALSE
Kernel Debugger connection established.
Loaded dbghelp extension DLL
Loaded ext extension DLL
Loaded exts extension DLL
Loaded kext extension DLL
Loaded kdexts extension DLL
Symbol search path is: *** Invalid *** : Verify _NT_SYMBOL_PATH setting
Executable search path is:
*********************************************************************
* Symbols can not be loaded because symbol path is not initialized. *
*                                                                   *
* The Symbol Path can be set by:                                    *
*   using the _NT_SYMBOL_PATH environment variable.                 *
*   using the -y <symbol_path> argument when starting the debugger. *
*   using .sympath and .sympath+                                    *
*********************************************************************
PsLoadedModuleList not initialized yet.  Delay kernel load.
Windows XP Kernel Version 2526 UP Free x86 compatible
Built by: 2526.xpclient.010724-1758
Kernel base = 0x804d2000 PsLoadedModuleList = 0x80547b28
System Uptime: not available
여기까지 나오면 연결 성공
타겟 컴퓨터 하드웨어 COM1은 충돌난거처럼 나오는게 정상
타겟 컴퓨터에 디바이스를 추가하면 ( 장치관리자에서 충돌나서 !가 나오면
리소스에서 IRQ값을 바꿔본다 )

DdkDrv20.sys DriverEntry: loading
DdkDrv20.sys AddDevice
DdkDrv20.sys, DdkDispatchPnp minor function(unknown_pnp_irp)
DdkDrv20.sys, DdkDispatchPnp minor function(IRP_MN_FILTER_RESOURCE_REQUIREMENTS)
DdkDrv20.sys, DdkDispatchPnp minor function(IRP_MN_START_DEVICE)
DdkDrv20.sys StartDevice
DdkDrv20.sys, DdkDispatchPnp minor function(IRP_MN_QUERY_CAPABILITIES)
DdkDrv20.sys, DdkDispatchPnp minor function(IRP_MN_QUERY_PNP_DEVICE_STATE)
DdkDrv20.sys, DdkDispatchPnp minor function(IRP_MN_QUERY_DEVICE_RELATIONS)

라고 뜬다.

이제 타겟 컴퓨터에서 DdkDrv20용 UserApp를 실행한후 File/Create를 하게 되면
소스컴퓨터의 WinDbg에
DdkDrv20.sys IRP_MJ_CREATE
라고 뜬다. 즉, 타겟 컴퓨터에 일어나는 드라이버내 DgbPrint가 소스 컴퓨터에
찍히는 것이다.

'KB > tutorial' 카테고리의 다른 글

DCOM 로컬서버 하기  (0) 2005.08.04
Implementation FAT File System  (0) 2004.11.04
How to i386 32bit OS Kernel Compile in VC6  (0) 2004.11.04
DDK in VC with SoftICE  (1) 2004.11.04
COM 형식 라이브러리 사용하기  (0) 2004.11.04

+ Recent posts