앨리스의 토끼

javahawk.egloos.com

포토로그 방명록


최근 포토로그


WinDbg를 이용한 VMWare의 가상머신 Kernel debugging - Debuggee 설정 by Kircheis

이런 건 일사천리로 뽑아줘야 제맛이지...

이번에는 Debuggee의 환경에서 맞춰 줄 차례이다.
일단 알고 넘어가야 할 것은 이전 글에서 나는 Debuggee OS의 COM 포트를 2번으로 잡았다는 점이다.
언제 그랬냐고 물을 것 같아서 얘기하지만, VMWare에서 Serial Port 2라고 잡히는 것은 COM2 포트가 할당되었다는 것이다.
결국 Debuggee PC의 장치관리자에서는 COM2 포트가 확인될 것이고, 여기를 통해서 제공되는 debug 정보는 \\.\pipe\xcom 이라는 파이프를 통해서 Debugger에 제공될 것이다.

그러면 이제 실제로 Debuggee에서 COM2 포트로 디버그 정보를 날리도록 설정해 보자.
미리 말해두지만, 여기서 설정하는 bcdedit나 msconfig는 Vista급에서는 지원되지만, 2000 등에서는 지원되지 않는다.
정확히 어떤 OS를 기준으로 지원되는지는 확인해 본 바가 없다.
만약 debug를 꼭 해야 하지만, bcdedit가 지원되지 않을 경우에는 널리 사용되고 있는 boot.ini 파일의 수정 방법을 추천한다.
이것에 대해서는 다음에 그 방법을 정리해 보도록 하겠다.

시작단추의 프로그램 중 '명령 프롬프트'를 '관리자 권한으로 실행'하도록 하자.
명령 프롬프트가 안보인다는 말은 하지 말자...
그것까지 찾아달라면 도둑놈이다...

분명 해당 화면의 타이틀바에 '관리자: 명령 프롬프트'라고 기록된 것이 보인다.
여기서 bcdedit를 실행해 보자.

가장 아래 보이는 항목 중 debug 항목이 'NO'인 것을 확인할 수 있다.

bcdedit /debug ON

이것을 입력하면 Debug 옵션이 켜진다.
이제 구체적인 COM2 포트 설정을 해보자.

bcdedit /dbgsettings serial debutport:2 baudrate:115200

을 입력한다.
'작업을 완료했습니다."
라는 메시지를 확인할 수 있다.

bcdedit /dbgsettings
를 입력하면 현재 설정된 debug 환경을 확인할 수 있다.

이제 '명령 프롬프트'를 닫는다.

다른 방법으로도 debug 정보가 설정된 내용을 확인할 수 있다.
'실행' 창에서 'msconfig'를 입력하여 실행시킨다.

나타나는 화면은 '시스템 구성' 창이다.
여기서 '부팅'탭을 선택하면 현재 OS에서 지원하는 부팅 모드를 확인할 수 있다.
이것의 자세한 사용법은 다음에 다뤄보자.

이 화면에서는 부팅에 대한 여러가지 옵션을 줄 수 있다.
중간 쯤에 있는 '부팅 로그'를 선택하면 부팅시의 커널 로그도 확인할 수 있을 듯...
나도 확인은 안해 봤다.
어쨌거나 중간 쯤에 있는 '고급 옵션'을 선택한다.
화면을 통해 내용들을 모두 확인할 수 있을 것이다.
상단의 체크박스 중 '디버그'가 선택된 것을 확인할 수 있다.

'전역 디버그 설정'에서 지정된 포트가  'COM2'라는 것과 '전송 속도'가 '115200'으로 설정된 것을 확인할 수 있다.
물론 여기서 값을 변경하면 반영이 되기 때문에 '시스템 구성'창을 닫을 때 변경된 내용의 반영을 위해 부팅이 필요하다는 메시지를 출력한다.
여기서 변경한 내용은 bcdedit를 통해서도 확인할 수 있다.
결국 bcdedit가 됬건 msconfig가 됬건 둘 중의 어느 쪽이라도 변경을 가하면 다른 쪽에서도 변경된 내용을 확인할 수 있다는 말이다.

참고로 msconfig에서 디버그 포트를 'USB'로 맞추면 'USB 대상 이름'을 지정해 줘야 해당하는 USB로 디버그 정보가 나가며,
1394로 설정하면 '채널'에서 지정한 채널번호로 디버그 정보가 제공된다.




메모장