류짱:Beyond MySelf

Windbg를 이용한 라이브 디버깅 설정 본문

Microsoft/Windows Platform

Windbg를 이용한 라이브 디버깅 설정

リュちゃん 2010. 8. 17. 18:23

[요구사항]


Live debugging
환경을 구성하기 위해 아래 준비가 요구됩니다.

1. Host computer (Windows XP/2000/2003/7/2008 중 하나를 운영하는 Laptop 또는 Desktop)

2. NULL-modem cable (Host computer Target computer 를 연결하기 위한 Serial-Serial 또는 Serial-USB 포트 케이블)

3. Debugging Tools for WIndows (아래 링크로 다운로드할 수 있으며, Host computer 에 설치해야 함)

   http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx

4. Host computer 상에 인터넷 연결 (Live debugging 동안 원격에서 Live meeting 연결 시 필요함)

 

자세한 절차

===========

1. NULL-modem 케이블로 Host computer Target computer 를 연결합니다. 또는 USB to Serial 케이블을 사용하여 노트북에는 USB를 서버에는 Serial 을 설정 합니다.

2. Windows 2003 이하일 경우 Target computer 상에서 아래와 같이 C:\boot.ini 파일에 "/debug /debugport=COM1 /BaudRate=115200"를 추가합니다. NULL-modem Target computer 상의 COM1 포트에 연결되었다고 가정합니다.

[boot loader]

timeout=30

default=multi(0)disk(0)rdisk(0)partition(1)\WINNT

[operating systems]

multi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft Windows 2000 Advanced Server" /fastdetect

multi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft Windows 2000 Advanced Server" /fastdetect /debug /debugport=COM1 /BaudRate=115200

 

3. 내 컴퓨터 – 속성 – 고급 – 시작 및 복구 – 자동으로 다시 시작이 선택 되어 있는 것을 해제 해 주시기 바랍니다.

4. Host computer 상에 아래 링크된 "Debugging Tools for Windows"를 설치합니다.

   설치 폴더는 C:\Debuggers 로 합니다.

   http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx

 

5. Target computer를 재 시작하셔서 부팅 옵션 중 Debug 스위치가 있는 항목으로 부팅합니다

 

6. WinDbg를 실행한 후 File Kernel debug를 선택하여 아래와 같이 설정 합니다. USB to Serial 을 사용하실 경우 USB 장치가 인식된 COM port로 설정해야 합니다.

7. Debug break 를 테스트하기 위해 CTRL+C 를 누릅니다. 이 경우 Host computer 에서 아래와 같은 유사한 라인들을 볼 수 있습니다. 이 때, Target computer Hang 처럼 보이지만, 이것은 정상적인 동작입니다.

 

Connected to Windows 2000 2195 x86 compatible target, ptr64 FALSE

Kernel Debugger connection established.

Symbol search path is: *** Invalid ***

Executable search path is:

Windows 2000 Kernel Version 2195 UP Free x86 compatible

Kernel base = 0x804de000 PsLoadedModuleList = 0x8054c8f0

System Uptime: not available

Break instruction exception - code 80000003 (first chance)

*******************************************************************************

*                                                                             *

*   You are seeing this message because you pressed either                    *

*       CTRL+C (if you run kd.exe) or,                                        *

*       CTRL+BREAK (if you run WinDBG),                                       *

*   on your debugger machine's keyboard.                                      *

*                                                                             *

*                   THIS IS NOT A BUG OR A SYSTEM CRASH                       *

*                                                                             *

* If you did not intend to break into the debugger, press the "g" key, then   *

* press the "Enter" key now.  This message might immediately reappear.  If it *

* does, press "g" and "Enter" again.                                          *

*                                                                             *

*******************************************************************************

nt!RtlpBreakWithStatusInstruction:

8012ff7c cc               int     3

Kd:0>

 

8. 만약 위와 같이 보인다면, 연결 상태는 정상임을 의미하며, Target computer Kernel debugger 연결이 성공적으로 구성되었음을 의미합니다. Host computer command window 에서 g 를 입력합니다. 이 경우 Target computer 는 정상적으로 동작하여야 합니다.

9. 연결하였던 Host 컴퓨터를 제거합니다.

10. 장애 발생 시 Host 컴퓨터를 다시 연결해 놓으신 후 위의 5번의 방법을 사용하여 WinDbg kernel debug를 한 후command window 에서 “.dump /mfh d:\temp\dumpfile.dmp” 를 입력해 덤프도 생성 할 수 있습니다.

 

[참고 자료]

How to set up a remote debug session using a null modem cable

http://support.microsoft.com/?id=151981