Visual Studio 2008을 설치했다면 “C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\Remote Debugger\x86\”에 가면 있을 것이다. 64bit는 x64 폴더에 있을 것이다. 실행파일은 “msvsmon.exe”이다.
프로그램을 실행할 PC(test pc)에 디버깅 모니터 툴을 설치한다, 없다면 위에 x86 폴더나
x64폴더를 컴퓨터 환경에 맞게 그대로 복사해도 된다.
* 원격 디버깅 시작
- 프로그램 소스 중 멈출 곳 바로 위에 __debugbreak() 함수를 넣어준다.
(__debugbreak() 함수는 브레이크 포인트를 걸은 것과 같은 효과를 지닌다.)
- 컴파일하고 실행할 준비를 한다.
- “Visual Sutdio 원격 디버깅 모니터”를 실행한다.
- “Visual Studio 원격 디버깅 모니터 툴” >> “도구” >> “옵션”에 가자.
- “인증 안 함(네이티브 전용)”을 선택
- “모든 사용자가 디버깅할 수 있도록 허용”에 체크
- “최대 유휴 시간(초)”를 0으로 설정한다.
[참고] Windows XP SP2 이상에서는 원격 디버깅 모니터를 실행할 경우 '네트워크 액세스: 로컬 계정에 대한 공유 및 보안' 로컬 보안 정책 옵션이 '게스트 전용 - 로컬 사용자를 게스트로 인증'으로 설정되어 있으므로 Visual Studio 원격 디버깅 모니터에서 응용 프로그램을 디버깅할 수 없습니다. 이것은 로컬 보안 설정' 관리도구에서 구성할 수 있습니다.' 라는 경고가 뜬다.
이를 풀기 위해서는 '제어판-관리도구-로컬보안정책'을 실행한 후, '로컬정책-보안옵션' 항목 중 '네트워크 액세스: 로컬 계정에 대한 공유 및 보안' 항목의 값을 '일반 - 로컬 사용자를 그대로 인증'으로 바꿔주면 된다.
- 이제 프로그램을 실행하면 위와 같이 오류 관련 경고 윈도우가 뜬다.
- 디버깅할 PC에 Visual Studio 2008(이하 VS2008라 칭함)로 가자
- “도구” >> “프로세스에 연결”에 들어가자.
- “전송”에 “원격(네이티브 전용, 인증 안 함)”으로 설정한다.
- “
- 이제 “사용 가능한 프로세스”에 디버깅 할 프로세스를 선택하고 “연결”을 누른다.
- 그리고 나서 아까 오류 관련 윈도우 경고 창이 뜬 곳에서 “보내지 않음”을 누른다.
- “중단”을 누르고 재미난 디버깅의 세계에 빠져들어 보자.
* 실행되는 PC에 운영체제가 Vista인 경우
Vista에서 오류 보고 윈도우가 안 뜰 수도 있고, 뜨더라도 프로그램이 종료되는 상황이 발생할 것이다. 예를 들어서 DLL이나 Service 프로그램을 디버깅할 때 말이다. 하지만 걱정하지 마시길~ Vista에vsjitdebugger.exe 을 시스템 폴더(system32)에 설치하고 그 뒤에 vsjit.reg 파일을 레지스트리에 등록하면 된다. 그러면 아래와 같은 오류 보고 창에
“프로그램 디버그” 항목이 하나 더 뜨는데 그것을 누르면 된다.
VS2008에서 “도구” >> “프로세스에 연결”이 안될 수 있는데 그럴 때는 Visual Studio 원격 디버깅 모니터 툴을 관리자 권한으로 실행해야 한다. 그리고 해당 PC에 네트워크 연결이 안될 경우에는 방화벽 옵션을 해제하면 된다.
* Tip
- __debugbreak() 함수 대신에 getchar(), Sleep() 등을 사용해서 VS2008에서 attach를 할 수 있도록 해 주면 간편하게 원격 디버깅을 할 수 있다.
'tool > VS10' 카테고리의 다른 글
윈도우8에서 항상 관리자 권한으로 실행 (0) | 2013.03.15 |
---|---|
'미리 컴파일된 헤더' 수동 등록 (0) | 2012.12.06 |
fatal error C1083: 미리 컴파일된 헤더 파일을 열 수 없습니다. (0) | 2012.08.08 |
c++ 단축키 (0) | 2011.10.17 |
Why does Visual Studio 2010 create ipch folder and .sdf file? (0) | 2011.05.05 |