원격 디버깅

tool/VS10 2012. 7. 10. 20:21

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 IP를 적는다.

이제 사용 가능한 프로세스에 디버깅 할 프로세스를 선택하고 연결을 누른다.

그리고 나서 아까 오류 관련 윈도우 경고 창이 뜬 곳에서 보내지 않음을 누른다.

 




중단을 누르고 재미난 디버깅의 세계에 빠져들어 보자.

 

 

실행되는 PC에 운영체제가 Vista인 경우

 

Vista에서 오류 보고 윈도우가 안 뜰 수도 있고뜨더라도 프로그램이 종료되는 상황이 발생할 것이다예를 들어서 DLL이나 Service 프로그램을 디버깅할 때 말이다하지만 걱정하지 마시길~ Vistavsjitdebugger.exe 을 시스템 폴더(system32)에 설치하고 그 뒤에 vsjit.reg 파일을 레지스트리에 등록하면 된다그러면 아래와 같은 오류 보고 창에

  프로그램 디버그 항목이 하나 더 뜨는데 그것을 누르면 된다.



 
 VS2008
에서 도구 >> 프로세스에 연결이 안될 수 있는데 그럴 때는 Visual Studio 원격 디버깅 모니터 툴을 관리자 권한으로 실행해야 한다그리고 해당 PC에 네트워크 연결이 안될 경우에는 방화벽 옵션을 해제하면 된다.

  

* Tip

 

 -  __debugbreak() 함수 대신에 getchar(), Sleep() 등을 사용해서 VS2008에서 attach를 할 수 있도록 해 주면 간편하게 원격 디버깅을 할 수 있다.


출처: http://blog.daum.net/jangbi/16474779

블로그 이미지

란마12

,