참조 : http://silverstr.ufies.org/lotr0/windbg-vmware.html

커널 영역에서 프로그램을 하다보면 디버깅이 반드시 필요하다..

디바이스 드라이버를 공부하다가 WinDbg라는 디버깅 툴을 알게 되었고  컴퓨터에 세팅을 해보았다.

 전에 선배가 해주었는데 오는 인터넷을 뒤적거리면 하나하나 내 손으로 해 보았다.

먼저 vmware의 guest os에 시리얼 포트를 만들어 주어야 한다.
사용자 삽입 이미지
guest os를 우클릭 해보면 settings를 클릭하면 나오는 화면이다. 여기서 Add를 눌러서 Serial port를 추가 해준다.

사용자 삽입 이미지

"Output to named pipe"를 클릭하고

사용자 삽입 이미지
각 항목을 위의 그림과 같이 설절해 준다.
사용자 삽입 이미지
설정이 다 되면 마지막으로 "I/o mode "에서 Yield cpu poll 를 체크 해준다. 왜그런진 모른다.ㅋ

이렇게 함으로써 시리얼 포트에 대한 설정이 끝났다.

다음으로 해야 할 일은 디버기 컴퓨터를 디버깅 모드로 부팅을 시켜주어야 한다.
boot.ini파일을 수정 하면 된다.
기본적으로 이 파일을 루트 디렉토리에 있는데 보이지 않게 해두어 있다.
폴더 옵션에서 보호된 운영체제 파일 숨기기를 체크 해제 하고 숨긴 파일 보이기를 체크 한다.

boot.ini파일을 열어서 가장 아래 쪽에 반드시 한줄로 다음의 내용을 추가 해준다.

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional - Debug" /fastdetect /debugport=com1 /baudrate=115200

위의 내용은 윈도우즈 xp에 해당 한다.

이렇게 함으로써 디버기 컴퓨터에 대한 세팅은 모두 끝났다.

다음으로 디버거 컴퓨터에 WinDbg를 설치해보고 세팅해보자.

WinDbg는 마이크로 소프트에서 제공하는 디버거이다. 비주얼 스튜디오에서 컴파일을 해보면
.pdb라는 파일이 생기는데 이 파일로 디버깅을 하는 것이다.

일단, WinDbg를 다운받으려면 ms홈페이지에서 받을 수 있다.

다음으로 해야 할 일은 심볼을 설정해주어야 한다. 이 심볼이 .pdb가 있는 곳을 가르쳐 주어야 하는데 지금 디버깅 하려는 대상은 하나의 운영체제 이므로 이 심볼 역시 ms에서 제공하는 것을 다운 받아야 한다. 일단 루트 폴더에 WebSymbols라는 폴더를 만들어 두고, WinDbg를 실행 시켜서 메뉴에 보면 Sysbol file path가 있는데 이 곳에 다음 내용을 넣어 두자
srv*C:\WebSymbols*http://msdl.microsoft.com/download/symbols

다음으로 WinDbg를 실행 시킬때 바로 디버기를 디버깅 할 수 있게 설정하기 위해서 실행 아이콘을 우클릭해서 설정으로 들어가보자
사용자 삽입 이미지
"대상"이라는 란에 -k com:pipe,port=\\.\pipe\com_1 이라는 내용을 추가하면
모든 것이 끝난다.

이제 wmware에서 guest os를 실행 시키고 디버거 컴퓨터에서 winDbg를 실행 시키면 연결이 된다...ㅋㅋ