'windbg'에 해당되는 글 2건

  1. 2008/05/28 WinDBG 디스크립터 덤프
  2. 2008/05/23 VMware를 이용한 커널 디버깅 설정법

WinDBG 디스크립터 덤프

컴퓨팅 2008/05/28 01:19
다음의 확장 DLL을 WinDBG의 폴더에 복사합니다.
C:\Program Files\Debugging Tools for Windows (x86)\winxp

첨부된 ProtMode.dll 은 윈도우XP에서 정상작동합니다.


사용방법:

사용자 삽입 이미지
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 : Comment 0

VMware를 이용한 커널 디버깅 설정법

컴퓨팅 2008/05/23 23:31

커널 디버깅 하기

 

 

디버깅을 당하는 PC를 타겟 PC 또는 디버기(debuggee)라고 하고 디버깅을 행하는 PC를 호스트 PC 또는 디버거(debugger)라고 합니다

windbg1.png


TARGET컴퓨터 구성하기

먼저 TARGET가 디버그 모드로 부팅할수 있도록 C:\에 위치한 boot.ini파일에 아래 내용을 추가 하도록하지요

multi(0)disk(0)rdisk(0)partition(1)₩WINDOWS="Windows Server 2003 (COM1)" /fastdetect /debug /debugport=COM1 /baudrate=115200

주의 : 위의 내용 그대로 치면 부팅 시 hal.dll에서 에러가 생길 확률이 높다. 가장 안전한 방법은 이미 설정되어 있는 위의 내용을 그대로 복사한뒤 /debug /debugport=COM1 /baudrate=115200 부분만 추가한다.



커널 디버깅을 위해 COM1 포트를 사용하고, 속도는 115200 을 사용한다는 것을 나타냄 한줄

windbg2.png


boot.ini 파일의 속성을 지정해 주도록하자 (시스템 파일이기 때문에 읽기 전용이고 시스템 속성이 설정되어 있다.보통 저장하면 기존 설정을 유지하고 있다, 않해줘도 문제는 없음)

c:₩>attrib +s +h +r boot.ini

이제 부팅시 TARGET 컴퓨터가 디버그 모드로 부팅할 수 있도록 설정을 완료

windbg3.png


 

HOST컴퓨터 준비하기

먼저 WinDbg를 설치하여야 겠지요?

다운로드 경로 Windbg 32Bit

http://msdl.microsoft.com/download/symbols/debuggers/dbg_x86_6.8.4.0.msi

 

다운로드 경로 Windbg 64Bit

http://msdl.microsoft.com/download/symbols/debuggers/dbg_ia64_6.8.4.0.msi

 

그리고 File->Symbol Path(심볼 경로)를 경로를 지정하도록 합시다~

windbg4.png


Symbol Search Path에 심볼 경로를 아래와 같이 입력해 주세요

windbg5.png


심볼 경로

srv*c:\symbols.pub*http://msdl.microsoft.com/download/symbols

 

이렇게 설정을 하면 WinDbg는 먼저 c:\symbols.pub 에 타겟 PC의 운영 체제에 맞는 심볼 파일이 있는지 검사하고 없으면 심볼 서버에서 다운받아 c:\symbols.pub 에 보관해 놓습니다.

 

주의 : c:\symbols.pub 디렉토리는 WinDbg가 만들어 주지 않습니다.

 

 

이제 File -> Kernel Debug를 선택합니다.

windbg6.png

 

 

TARGET과 연결된 Null Modem CableCOM Port와 설정한 속도를 확인후 아래 확인을 누릅니다.

windbg7.png


그럼 아래와 같이 대기 상태가 되며, 이제 HOST 컴퓨터의 준비 단계는 끝입니다.

 주의 : HOST 컴퓨터를 먼저 대기 시키고 TARGET컴퓨터을 디버그 모드로 부팅하셔야 합니다.

 

windbg8.png

TARGET컴퓨터를 재부팅하고 boot.ini에 만들어둔 Windows Server 2003 (COM1)모드로 TARGET컴퓨터를 부팅하면 커널 디버깅 화면을 보실수 있습니다. 수고하셨습니다 ^^

 

VM (Virtual Machine)으로 구성 하기

커널 모드 디버깅을 실제 머신으로 한다면 얼마나 불편할지 귀차니즘이 하늘을 찌르네요

다행이 VM 머신으로 구성할수 있는 방법이 존재합니다.

 

TEST할 하나의 Virtual Machine을 선택 후 마우스 오른쪽을 눌려 구성(setting) 선택합니다.

 

그리고 COM1 Named pipe로 설정후 원하시는 이름을 지정하여 줍니다.
 
여기서는 \\.\pipe\vm_com으로 하였어요

 

 

windbg9.png

 

다음 TARGET 컴퓨터도 boot.ini 파일을 수정후 재부팅하여 아래와 같은 부팅 메뉴에서 엔터를 누르지말고 그대로 두고, 이제 HOST 컴퓨터를 설정합니다.

 

windbg10.png

 

파이프로 연결되기 위해서는 WinDbg에 단축아이콘을 하나 만들어 실행시 아래 옵션을 붙여 주도록 합시다.

-k com:pipe,port=\\.\pipe\vm_com

 

windbg11.png

 

위와 같이 단축아이콘을 설정후 실행하면 아래와 같은 화면이 나오며 대기하게 됩니다.

이제 VM머신을 디버그 모드로 부팅을 해보도록 합시다. (모드 선택에서 [디버거 사용 가능] 확인)

windbg12.png


 

부팅을 하게 되면 아래와 같은 메시지가 나오며 TARGET 컴퓨터에 연결이 됩니다.

Ctrl+Break 키를 누르면 TARGET 컴퓨터가 정지하며 TARGET 컴퓨터를 커널 디버깅을 할수 있습니다.

몇가지 명령을 실행해 보로록 하겠습니다. 

windbg13.png


 

.sympath를 설정된 심볼경로를 보여주는데, 로컬경로인 C:\symbols.pub 디렉토리는 수동으로 만들어 주서야 합니다. 만들어 주지 않으시면 아래와 같은 메시지를 확인할수 있습니다.

WARNING: Whitespace at end of path element

windbg14.png


 

lm명령을 통해 로드된 심볼이 무언인지 확인해 보도록 하죠, 여기서 다른 모듈들이 (deferred)라고 나오는데요, 이것은 모듈은 로드되었지만 그에 해당하는 심볼은 로드되지 않았다는 것을 뜻합니다. 사용자가 필요한 심볼이 있다면 ld 명령을 통해 로드 시킬수 있습니다.

windbg15.png


 

 

Srv를 로드해 봅시다

정상적으로 잘 로드가 되었네요

 

windbg16.png


windbg17.png


어떤 심볼이 들어있는지 x 명령을 통해 확인해 보도록 하죠

 

windbg18.png

이정도로 여기서는 마치도록 하겠습니다.

크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 : Comment 0