'Remote Debugging'에 해당되는 글 1건

  1. 2010.11.23 Remote Debugging
Tip2010. 11. 23. 18:10

봄공책에 적었던 내용을 옮겨 본다.

내 PC에서는 잘 되는데, 디자이너나 기획자의 PC에서는 비정상 동작을 할 경우가 있다.
무턱대고 로그를 기록하기도, 다른 사람의 PC에 비쥬얼 스튜디오를 설치하기도 부담스럽다.
이때 리모트 디버깅을 하면 편하게 원격 PC의 실행파일을 디버깅 할 수 있다.
리모트 디버깅에는 두 가지 타입이 있다. "실행중인 프로세스에 어태치"하는 것과
 "프로세스를 실행"하는 것인데, 보통 첫번째 방법이 많이 쓰이고 웹상에 설명도 많다. 두 가지 방법 모두 Remote-side와 Client-side에서 설정해 줘야할 몇가지가 있는데 그것들을 알아보자.


[ Remote-side ]
MSVS를 사용하든, WinDbg를 사용하든 아래의 설정을 해줘야 한다.

  1. 디버깅하고자 하는 원격 컴퓨터에 remote debugging을 위한 파일들을 준비한다.
    1. Microsoft Visual Studio 8/Common7/IDE/Remote Debugger/x86 또는,
    2. Microsoft Visual Studio 8/Common7/IDE/Remote Debugger/x64 중에
    3. Remote의 OS 맞는 폴더의 파일들을 원격 컴퓨터에 위치시킨다. 
  2. 폴더 안 파일 중에 msvsmon.exe라는 파일을 실행시킨다.
    1. 메뉴>도구>옵션
      1. 컨트롤 설정: 인증 안함 > 모든 사용자가 디버깅할 수 있도록 허용
        (인증 모드도 가능함. 여기선 인증 안함을 선택)
      2. 서버이름을 클라이언트에게 알려준다. 세미콜론(:) 앞에까지가 서버이름임.
  3. 디버깅하고자 하는 어플리케이션(이하 디버기)의 폴더를 공유시킨다
    1. 실행파일과 PDB의 공유 때문임
    2. Client-side 심볼 설정시 경로 필요
    3. 동일한 PDB를 가지고 있다면 폴더를 공유시킬 필요는 없음

[ Remote-side 2 ]
"CODEVANIA-DEV"가 Remote server name이다.



처음에 언급했던 두 가지 방법 모두를 설명한다. 원하는 방법 하나를 택하면 됨.

[ Client-side ]
공통으로 PDB파일의 경로를 설정해 줘야함

  1. MSVS 실행
  2. 메뉴>도구>옵션>디버깅>기호
    1. \\원격 컴퓨터 ip\디버기가 위치한 원격 컴퓨터의 공유 폴더 이름
      예) \\192.164.0.1\Play
    2. \\원격 컴퓨터 이름\디버기가 위치한 원격 컴퓨터의 공유 폴더 이름
      예)\\CODEVANIA-DEV\Play
    3. 동일한 PDB를 가지고 있다면, 꼭 Remote의 경로로 설정할 필요는 없다.




[ Client-side : 실행중인 프로세스에 어태치 ]

  1. 메뉴>디버그>프로세스에 연결
    1. 전송: 원격
    2. 한정자: [Remote-side 2.1.2]에서 획득한 서버이름
    3. '새로고침'하여 디버깅하고자 하는 어플리케이션에 Attach & 디버깅  :)




[ Client-side : 프로세스 실행 ]

  1. 프로젝트>프로퍼티>디버깅
  2. Debugger to launch -> Remote Windows Debugger
    1. Remote Command: Remote PC상의 디버깅하고자 하는 바이너리 경로
    2. Remote Server Name: 리모트 서버 이름
    3. Connection: 리모트 서버에서 설정한 것과 동일하게 맞춤
    4. Attach: Yes로 하면 바로 위의 [ Client-side : 실행중인 프로세스에 어태치 ]와 동일함
    5. 설정 저장 후 F5 눌러서 디버깅  :)




참조: Project Settings for a C++ Debug Configuration

'Tip' 카테고리의 다른 글

Rvalue References and Perfect Forwarding  (0) 2011.01.12
Set a Thread Name in Native Code  (0) 2010.12.03
IsNaN  (0) 2010.11.02
Failed to create .NET Frameworks PropertyGrid component  (0) 2010.08.20
Access Violation 발생시 무사히 빠져나오기  (2) 2010.08.20
Posted by codevania