-
VMWare 와 WinDbg 를 연결하여 디버기 하기tip 2012. 8. 24. 14:07
오늘은 많이들 알고 계시는 VMWare 와 WinDbg 를 연결하는 방법에 대해서 정리하고자 합니다.
이미 많은 블로그에서 다루고 있는 주제이지만 아무런 설명 없이 맹목적으로 따라하라고 되어있는 설명들 때문에 허비해야했던 시간을 앞으로는 다시 하지 말자는 뜻에서 정리해보겠습니다.
1. VM 설정
VM-->Settings (Ctrl+D) 를 차례로 클릭한 후, Hardware 탭에서 Add 버튼을 눌러 Serial Port 를 추가합니다. 추가하는 과정에서 설정하는 옵션들은 아래 그림을 통해서 모두 확인할 수 있습니다.
- Check "Connect at power on"
- Use named pipe: \\.\pipe\xcom
- This end is the server.
- The other end is an application
- Check "Yeild CPU on pol"
여기서 설정한 xcom 의 이름은 이후에 설정하게될 WinDbg 실행 옵션에서 설정하는 포트 이름과 일치하기만 하면 됩니다. 3번 항목에서 Windbg 실행 옵션을 참고하세요.
2. 타겟 OS 의 boot.ini 설정
VMWare 에 설치된 운영체제가 윈도우일 경우 boot.ini 를 편집 가능한 모드로 열어 다음과 같이 디버그 옵션을 추가 합니다. 아래 글 상자에 빨간색 부분이 추가된 부팅 옵션입니다.
[boot loader]
timeout=15
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional - Debug" /fastdetect /debugport=COM2 /baudrate=115200
추가된 옵션 중 debugport 를 일반적으로 COM1 을 사용합니다. 하지만 기존에 사용하고 계셨다면 WinDbg 와 VMWare 가 디버그 정보를 정상적으로 주고 받을 수 없습니다. 따라서 아래 그림과 같이 "장치 관리자"에서 COM 포트가 사용되고 있는지 확인 후 적절한 COM 포트를 디버그 포트로 사용하셔야 합니다.3. WinDbg 실행
이제 VMWare 에 설치된 운영체제가 Serial Port 로 전송하는 디버그 정보를 받고 WinDbg 의 명령을 보내기 위해서 다음과 같은 옵션으로 실행되어야 합니다.
"C:\Program Files (x86)\Windows Kits\8.0\Debuggers\x86\windbg.exe" -b -k com:pipe,port=\\.\pipe\xcom,resets=0,reconnect
※ Tip 1. reconnect 옵션은 WinDbg 가 xcom 포트를 찾지 못해도 계속해서 찾으라는 옵션 입니다. 그래서 이 옵션을 추가하면 4번 실행 단계에서 WinDbg 를 먼저 실행해 놓은 후 VMWare 를 구동할 수 있도록 해줍니다.
※ Tip 2. -b 옵션은 WinDbg 와 VMWare 가 연될 된 후 VMWare 에서 동작하는 운영체제가 재부팅될 때 WinDbg 가 자동으로 다시 연결을 시도하도록 하는 옵셥입니다.
위 옵션은 WinDbg 6.x 이상에서 최적화된 옵션입니다. 하위 버전을 사용하고 계실 경우에는 다음과 같이 설정하시면 됩니다.
windbg.exe -k com:port=\\.\pipe\xcom,pipe
※ Tip 3. 위와 같은 명령으로 실행하는 "바로가기"를 만들어 사용하시면 편리합니다.
4. 실행
이제 3번에서 생성한 WinDbg 바로가기를 실행한 후 2번에서 boot.ini 가 변경된 운영체제를 실행합니다. 2번에서 추가한 옵션으로 아래 화면과 같이 운영체제를 Debug 모드로 실행할 수 있은 부팅 옵션이 추가된 것을 확인할 수 있을 것 입니다.
위 화면에서 Debug 모드를 선택하여 실행시켰다면 지정된 포트 - 여기서는 xcom 으로 설정함 - 로 신호를 받아 아래 그림과 같이 정상적인 연결을 확인할 수 있습니다.
자~! 그럼 이제 재미난 디버깅을 해볼까요?!!! ^^*
'tip' 카테고리의 다른 글
네트워크 연결 최대 개수 (0) 2012.10.22 윈도우 기본 공유폴더 제거 및 사용자 인증 적용하기 (0) 2012.08.28 SecureDNS (0) 2012.08.22 Remove vs. Purge (0) 2012.08.22 크롬에서 한글폰트가 깨져 보일 때 (0) 2012.05.08