Jaa


Windbg Remote debugging 설정 방법

오늘은 WinDbg를 이용해서 remote debugging을 하는 방법을 알아보려 합니다.

원격지의 WinDbg 프로그램을 서로 Server, Client 처럼 TCP/IP나 named pipe를 이용해서 통신하게 함으로써 debugging을 하는 방법입니다.

이 방법은 실제 debugging을 진행할 사람과 재현 장비가 멀리 떨어져 있는 경우 네트웤을 통해 디버깅을 할 수 있게 해주므로 매우 유용하게 사용할 수 있습니다.

다만 이렇게 WinDbg 끼리 서로 통신하려면 상호간에 연결이 되어야 하므로 약간을 설정이 필요합니다.

 

여기서는 TCP/IP를 이용한 remote debugging 방법을 알아보도록 하지요.

다음과 같은 상황을 가정해 보았습니다.

우선 일반적으로 kernel debugging을 하기 위한 환경 설정을 먼저 진행합니다. Target machine과 Host machine을 1394를 이용해서 연결하는 과정입니다.
(세부 내용은 https://msdn.microsoft.com/en-us/library/cc266332.aspx 참고)

1. 일반적으로 kernel debugging을 위해서 target machine과 host machine을 1394 cable을 이용해서 연결한 뒤

2. Target machine을 debug mode로 부팅하고 (boot.ini 수정이나 vista에서는 bcdedit.exe 설정 필요)

3. Host machine에서는 WinDbg를 실행시킨 후 kernel debug를 시작한다.

4. Target machine과 Host machine의 windbg가 연결되면 kernel debugging이 가능하다.

자..여기까지 진행되었다면 Host machine과 원격지에 있는 Remote machine을 연결하는 방법을 알아보도록 하겠습니다.
현재 상황에서는 Host machine의 WinDbg가 server의 역할을, 그리고 Remote machine의 WinDbg가 client의 역할을 하게 됩니다.

즉, Hostmachine의 WinDbg와 Remote machine의 WinDbg가 서로 연결되어 통신할 수 있다면, Remote machine에서 Host machine을 거쳐서 Target machine을 kernel debugging을 하는 것이 가능해집니다.

 

Host machine과 Remote machine은 TCP/IP나 named pipe로 연결이 가능한데, 여기서는 TCP/IP를 이용한 네트워크 연결법을 알아보도록 하겠습니다.

 

5. Host machine에서 windbg를 break한 상태에서 kernel debug mode에서 다음과 같이 입력합니다.

A. Kd> .server tcp:Port=<port number>

B. Host machine의 windbg에서 server가 start 되었다는 메시지가 보여집니다. 즉, Host machine에서 지정한 port number로 remote machine이 연결하기를 기다리는 상태가 됩니다.

이제 원격지에서 실제로 debugging할 엔지니어에게 host machine에 접근할 수 있는 장비명(or IP 주소)과 Port 번호를 알려줍니다. 만약 중간에 방화벽 같은 게 있다면 접근이 허용될 수 있도록 설정을 해줘야 합니다.

 

이제 Remote machine에서 Host machine으로 접근해 보겠습니다.

6. Remote machine의 WinDbg의 file 메뉴에서 ‘connect to remote session’을 선택하고 접근할 Host machine의 server name(or IP 주소)과 지정한 port 번호를 입력합니다.

 

 

7. 연결에 성공하였다면 Remote machine의 WinDbg에서 다음과 같은 메시지를 볼 수 있습니다.

Microsoft (R) Windows Debugger Version 6.11.0001.402 X86

Copyright (c) Microsoft Corporation. All rights reserved.

Server started. Client can connect with any of these command lines

0: <debugger> -remote tcp:Port=10123,Server=SOONKKIM2

SOONKKIM1\soonkkim (tcp 157.60.9.124:43460) connected at Fri Mar 20 15:52:52 2009

8. Remote machine의 WinDbg를 이용해서 debugging을 진행하면 됩니다.

Comments