봄공책에 적었던 내용을 옮겨 본다.
내 PC에서는 잘 되는데, 디자이너나 기획자의 PC에서는 비정상 동작을 할 경우가 있다.
무턱대고 로그를 기록하기도, 다른 사람의 PC에 비쥬얼 스튜디오를 설치하기도 부담스럽다.
이때 리모트 디버깅을 하면 편하게 원격 PC의 실행파일을 디버깅 할 수 있다.
리모트 디버깅에는 두 가지 타입이 있다. "실행중인 프로세스에 어태치"하는 것과 "프로세스를 실행"하는 것인데, 보통 첫번째 방법이 많이 쓰이고 웹상에 설명도 많다. 두 가지 방법 모두 Remote-side와 Client-side에서 설정해 줘야할 몇가지가 있는데 그것들을 알아보자.
무턱대고 로그를 기록하기도, 다른 사람의 PC에 비쥬얼 스튜디오를 설치하기도 부담스럽다.
이때 리모트 디버깅을 하면 편하게 원격 PC의 실행파일을 디버깅 할 수 있다.
리모트 디버깅에는 두 가지 타입이 있다. "실행중인 프로세스에 어태치"하는 것과 "프로세스를 실행"하는 것인데, 보통 첫번째 방법이 많이 쓰이고 웹상에 설명도 많다. 두 가지 방법 모두 Remote-side와 Client-side에서 설정해 줘야할 몇가지가 있는데 그것들을 알아보자.
[ Remote-side ]
MSVS를 사용하든, WinDbg를 사용하든 아래의 설정을 해줘야 한다.
- 디버깅하고자 하는 원격 컴퓨터에 remote debugging을 위한 파일들을 준비한다.
- Microsoft Visual Studio 8/Common7/IDE/Remote Debugger/x86 또는,
- Microsoft Visual Studio 8/Common7/IDE/Remote Debugger/x64 중에
- Remote의 OS 맞는 폴더의 파일들을 원격 컴퓨터에 위치시킨다.
- 폴더 안 파일 중에 msvsmon.exe라는 파일을 실행시킨다.
- 메뉴>도구>옵션
- 컨트롤 설정: 인증 안함 > 모든 사용자가 디버깅할 수 있도록 허용
(인증 모드도 가능함. 여기선 인증 안함을 선택) - 서버이름을 클라이언트에게 알려준다. 세미콜론(:) 앞에까지가 서버이름임.
- 디버깅하고자 하는 어플리케이션(이하 디버기)의 폴더를 공유시킨다
- 실행파일과 PDB의 공유 때문임
- Client-side 심볼 설정시 경로 필요
- 동일한 PDB를 가지고 있다면 폴더를 공유시킬 필요는 없음
[ Remote-side 2 ]
"CODEVANIA-DEV"가 Remote server name이다.
처음에 언급했던 두 가지 방법 모두를 설명한다. 원하는 방법 하나를 택하면 됨.
[ Client-side ]
공통으로 PDB파일의 경로를 설정해 줘야함
- MSVS 실행
- 메뉴>도구>옵션>디버깅>기호
- \\원격 컴퓨터 ip\디버기가 위치한 원격 컴퓨터의 공유 폴더 이름
예) \\192.164.0.1\Play - \\원격 컴퓨터 이름\디버기가 위치한 원격 컴퓨터의 공유 폴더 이름
예)\\CODEVANIA-DEV\Play - 동일한 PDB를 가지고 있다면, 꼭 Remote의 경로로 설정할 필요는 없다.
[ Client-side : 실행중인 프로세스에 어태치 ]
- 메뉴>디버그>프로세스에 연결
- 전송: 원격
- 한정자: [Remote-side 2.1.2]에서 획득한 서버이름
- '새로고침'하여 디버깅하고자 하는 어플리케이션에 Attach & 디버깅 :)
[ Client-side : 프로세스 실행 ]
- 프로젝트>프로퍼티>디버깅
- Debugger to launch -> Remote Windows Debugger
- Remote Command: Remote PC상의 디버깅하고자 하는 바이너리 경로
- Remote Server Name: 리모트 서버 이름
- Connection: 리모트 서버에서 설정한 것과 동일하게 맞춤
- Attach: Yes로 하면 바로 위의 [ Client-side : 실행중인 프로세스에 어태치 ]와 동일함
- 설정 저장 후 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 |