커널 디버깅 하기
디버깅을 당하는 PC를 타겟 PC 또는 디버기(debuggee)라고 하고 디버깅을 행하는 PC를 호스트 PC 또는 디버거(debugger)라고 합니다

TARGET컴퓨터 구성하기
먼저 TARGET가 디버그 모드로 부팅할수 있도록 C:\에 위치한 boot.ini파일에 아래 내용을 추가 하도록하지요
multi(0)disk(0)rdisk(0)partition(1)₩WINDOWS="Windows Server 2003 (COM1)" /fastdetect /debug /debugport=COM1 /baudrate=115200
주의 : 위의 내용 그대로 치면 부팅 시 hal.dll에서 에러가 생길 확률이 높다. 가장 안전한 방법은 이미 설정되어 있는 위의 내용을 그대로 복사한뒤 /debug /debugport=COM1 /baudrate=115200 부분만 추가한다.
커널 디버깅을 위해 COM1 포트를 사용하고, 속도는 115200 을 사용한다는 것을 나타냄 한줄임

boot.ini 파일의 속성을 지정해 주도록하자 (시스템 파일이기 때문에 읽기 전용이고 시스템 속성이 설정되어 있다.보통 저장하면 기존 설정을 유지하고 있다, 않해줘도 문제는 없음)
c:₩>attrib +s +h +r boot.ini
이제 부팅시 TARGET 컴퓨터가 디버그 모드로 부팅할 수 있도록 설정을 완료

HOST컴퓨터 준비하기
먼저 WinDbg를 설치하여야 겠지요?
다운로드 경로 Windbg 32Bit
http://msdl.microsoft.com/download/symbols/debuggers/dbg_x86_6.8.4.0.msi
다운로드 경로 Windbg 64Bit
http://msdl.microsoft.com/download/symbols/debuggers/dbg_ia64_6.8.4.0.msi
그리고 File->Symbol Path(심볼 경로)를 경로를 지정하도록 합시다~

Symbol Search Path에 심볼 경로를 아래와 같이 입력해 주세요

심볼 경로
srv*c:\symbols.pub*http://msdl.microsoft.com/download/symbols
이렇게 설정을 하면 WinDbg는 먼저 c:\symbols.pub 에 타겟 PC의 운영 체제에 맞는 심볼 파일이 있는지 검사하고 없으면 심볼 서버에서 다운받아 c:\symbols.pub 에 보관해 놓습니다.
※ 주의 : c:\symbols.pub 디렉토리는 WinDbg가 만들어 주지 않습니다.
이제 File -> Kernel Debug를 선택합니다.

TARGET과 연결된 Null Modem Cable의 COM Port와 설정한 속도를 확인후 아래 확인을 누릅니다.

그럼 아래와 같이 대기 상태가 되며, 이제 HOST 컴퓨터의 준비 단계는 끝입니다.
주의 : HOST 컴퓨터를 먼저 대기 시키고 TARGET컴퓨터을 디버그 모드로 부팅하셔야 합니다.

TARGET컴퓨터를 재부팅하고 boot.ini에 만들어둔 Windows Server 2003 (COM1)모드로 TARGET컴퓨터를 부팅하면 커널 디버깅 화면을 보실수 있습니다. 수고하셨습니다 ^^
VM (Virtual Machine)으로 구성 하기
커널 모드 디버깅을 실제 머신으로 한다면 얼마나 불편할지 귀차니즘이 하늘을 찌르네요
다행이 VM 머신으로 구성할수 있는 방법이 존재합니다.
TEST할 하나의 Virtual Machine을 선택 후 마우스 오른쪽을 눌려 구성(setting) 선택합니다.
그리고 COM1을 Named pipe로 설정후 원하시는 이름을 지정하여 줍니다.
여기서는 “\\.\pipe\vm_com”으로 하였어요

다음 TARGET 컴퓨터도 boot.ini 파일을 수정후 재부팅하여 아래와 같은 부팅 메뉴에서 엔터를 누르지말고 그대로 두고, 이제 HOST 컴퓨터를 설정합니다.

파이프로 연결되기 위해서는 WinDbg에 단축아이콘을 하나 만들어 실행시 아래 옵션을 붙여 주도록 합시다.
-k com:pipe,port=\\.\pipe\vm_com

위와 같이 단축아이콘을 설정후 실행하면 아래와 같은 화면이 나오며 대기하게 됩니다.
이제 VM머신을 디버그 모드로 부팅을 해보도록 합시다. (모드 선택에서 [디버거 사용 가능] 확인)

부팅을 하게 되면 아래와 같은 메시지가 나오며 TARGET 컴퓨터에 연결이 됩니다.
Ctrl+Break 키를 누르면 TARGET 컴퓨터가 정지하며 TARGET 컴퓨터를 커널 디버깅을 할수 있습니다.
몇가지 명령을 실행해 보로록 하겠습니다.

.sympath를 설정된 심볼경로를 보여주는데, 로컬경로인 C:\symbols.pub 디렉토리는 수동으로 만들어 주서야 합니다. 만들어 주지 않으시면 아래와 같은 메시지를 확인할수 있습니다.
WARNING: Whitespace at end of path element

lm명령을 통해 로드된 심볼이 무언인지 확인해 보도록 하죠, 여기서 다른 모듈들이 (deferred)라고 나오는데요, 이것은 모듈은 로드되었지만 그에 해당하는 심볼은 로드되지 않았다는 것을 뜻합니다. 사용자가 필요한 심볼이 있다면 ld 명령을 통해 로드 시킬수 있습니다.

Srv를 로드해 봅시다
정상적으로 잘 로드가 되었네요


어떤 심볼이 들어있는지 x 명령을 통해 확인해 보도록 하죠

이정도로 여기서는 마치도록 하겠습니다.