Programming/Kernel / Driver2008. 12. 5. 17:32

MS에서 배포한 커널 디버거인 WinDbg를 VMWare와 연동하는 것을 정리해보아야지~

아래 글은 내 생각대로 쓴 글도 있고 스노야님 께서 올려주신 강좌를 참조한(거의 배꼇다 ^^;) 부분도 있다.

 

 

대표적인 커널 디버거는 WinDbg와 SoftICE가 있지만 현재 SoftICE는 계발이 중지된 상태이다.

 

그래서 현재 가장 많이 사용되는 커널 디버거 툴이 WinDbg가 아닐까 한다. SoftICE와 다르게 WinDbg는 또 다른 컴퓨터를 디버깅할 수 있지 자기자신을 디버깅할 수 는 없다.

 

즉, 2대의 컴퓨터가 필요하다는 것이다. 하지만 VMWare를 이용하면 한 대의 PC로도 가능하다. 요즘은 PC의 성능이 좋아서 가상 머신정도는  돌리는 대는 별 지장이 없어보인다.

 

그럼 연동 하는 것을 스노야님 강좌를 참조하여 정리해 보자~!!!

 

==========================================================================================

 

우선 가상머신에 시리얼 포트를 추가해주어야 PC와 VMWare가 통신이 가능하다. 시리얼 포트는 "VM -> Settings -> Hardware" 탭에서 추가할 수 있다.

 

아래 그림은 시리얼 포트를 추가하는 모습을 차례대로 스크린 샷을 찍어 보았다.

 

 

 

 

 

 

 

 

 

여기에서 설정하는 파이프 이름이 WinDbg와 연동할 때 사용되는 이름이다.

 

 

 

 

위와 같이 하면 com_1이라고하는 시리얼 포트가 지정된다.(마지막 그림에서 I/O mode를 체크하는 이유는 잘 모르겠다 ^^;)  포트를 지정했으면 VMWare를 시작하여 부팅 시 디버그 모드가 작동할 수 있도록 boot.ini 파일을 작성하여야 한다.

 

아래는 boot.ini 파일을 수정한 그림과 수정 후 부팅과정에서 뜬 디버깅 모드이다.

만일 c: 루트디렉토리에 boot.ini 파일이 없다면 실행창에 "c:boot.ini"이라고 입력하면 창이 뜬다.

 

 

 

 

여기 까지 했으면 타겟 PC(여기서는 VMWare)의 설정은 끝났다. 이제 WinDbg를 설정하여 연결되도록 해야한다. 아래는 그림은 위에서 명명한 파이프 이름으로 WinDbg를 VMWare와 연동하는 모습이다.

 

 

설정은 끝났다. 정상적으로 연동이 되었다면 WinDbg를 켜놓은 상태에서 타겟 PC(VMWare)를 디버깅 모드로 부팅 시키면 아래 그림과 같이 WinDbg가 작동한다.

 

 

타겟 PC가 정상적으로 부팅된 후  WinDbg의 "Debug -> Break" 메뉴를 이용하여 타겟 PC의 커널을 마음껏 살펴 볼 수 있다. 아래 그림은 부팅 후 WinDbg를 이용하여 로드된 모듈을 확인한 모습이다.

 

 

 

==========================================================================================

 

이상으로 연동하는 것을 정리해 보았다.

Posted by skensita