2011. 10. 5. 22:22

VirtualBox를 이용한 Windows XP 디버깅

WDK 를 이용한 디바이스 드라이버 개발에 대해서 잠깐 공부해 보았습니다.
(디버깅을 위한 필터 드라이버를 만들어 볼까? 에서 부터 시작되었습니다.)

책에서는 PC 2대를 이용하여 하나는 Debuggee 로 하나는 Debugger 로 사용하는 방법이 아주 자세하게 소개되어 있었습니다. 하지만 이렇게 환경세팅을 하기에는 아무래도 벅차다 싶어 걍 그만둘까 하다가 Virtual Machine 을 이용해서도 할 수 있다는 내용을  저자가 언급을 하였더랬죠.

이거다 싶어 찾아보았습니다. 구글링을 하다가 관련된 내용을 찾아서 해보았습니다. 아래는 참고한 사이트의 목록입니다. 한 사이트에서 VMWare 를 이용한 방법에 대해서 자세하게 다루고 있는데 제가 알기로는 VMWare 는 무료가 아닙니다. 그래서 VirtualBox 를 이용한 방법을 고집스럽게 찾아보았고 여러가지 정보를 모아서 성공하기에 이릅니다.

참고한 사이트
http://hasu0707.tistory.com/218
http://hermes2.egloos.com/710368
http://blog.naver.com/PostView.nhn?blogId=yundorri&logNo=80048631747&redirect=Dlog&widgetTypeCall=true
 
필요한 도구는 다음과 같습니다.

* WinDbg
커널 디버깅을 하기 위한 도구입니다.
WDK 를 설치하거나 (http://www.microsoft.com/download/en/details.aspx?id=11800)
Debugging Tools 를 설치하시면 됩니다. (http://msdn.microsoft.com/en-us/windows/hardware/gg463009)

* VirtualBox
* iso 포맷의 Windows XP 설치 파일
라이센스 문제가 있기 때문에 알아서 구하셔야 합니다.
설치 방법은 구글링을 해보시기 바랍니다. 
 
Windows XP 가 VirtualBox 에 설치되어 있으며, Host PC 에 WinDbg 가 설치되어 있다고 가정하고 진행하겠습니다.

1. VirtualBox 설정

디버깅에 사용할 Serial Port 를 설정합니다. PC 와 달리 VM 에서는 Pipe 를 사용해야 합니다. 설정방법은 다음과 같습니다.

 
"포트/파일 경로" \\.\pipe\com_1 은 기억해 둡니다.

확인을 누르고  Windows XP 를 시작합니다.

2. Windows XP 설정

폴더 옵션을 아래와 같이 설정한 후, 


확인을 누르고, C:\ (OS 가 설치된 드라이브)로 가면 boot.ini 파일이 보입니다. 

아래 그림처럼 

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="WinDBG Remote Debugging Mode (VM)" /fastdetect /debug

항목을 추가합니다.


만일 VM 이 아니라면 아래와 같이 port 를 지정합니다.

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="WinDBG Remote Debugging Mode" /fastdetect /debug /debugport=COM1 /baudrate=115200

이렇게 한후 재부팅을 하고 부팅시에 "WinDBG Remote Debugging Mode (VM)" 를 선택합니다.


3. WinDBG 를 이용한 디버깅

windbg 를 실행한 후  File > Kernel Debug 를 선택한 후 아래처럼 입력합니다.


확인을 누르고, VM의 Windows XP 에 디버깅이 성공하면, 아래 화면과 같이 됩니다.
혹 문제가 있는 경우, PC 를 재부팅한 후 다시 해보시기 바랍니다.