[Digging] VS2005 원격디버깅
내 자리에서는 잘되는 프로그램이 특정 컴퓨터에서 잘 돌아가지 않을때 원격디버깅을 사용한다고 한다.
오늘 회사에서도 그런일이 있어서 자료를 이것저것 찾아서 그럭저럭 디버깅이 가능하긴 했는데..
몇가지 처음할때 혼돈이 가는 부분이 있어서 정리해놓기로 하였다.
혹시나 원격디버깅을 검색하다 찾아오셨으면 잘 오신거라 생각한다. 두둥~
하 지 만 내부망에서만 테스트 해봤기때문에 그 외에 외부적인 테스트는 확실하다고는 못하겠다.
그 부분은 알아서 찾아서 해보시기를 바라고,
우선 원격디버깅에 앞서 기본적인것을 말하고자 한다.
원격 디버깅을 하기위한 환경은 Visual Studio 2005이다.
그리고 당연하지만 테스트하기 위한 프로젝트는 배포한 파일을 생성한 프로젝트이다.
그리고 원격디버깅을 하는 컴퓨터와
프로그램을 실행하는(원격디버깅을 당하는)컴퓨터의 OS는 XP이다.
이점 유의하시고 하나씩 보시면 될거 같다.
[ 프로그램이 실행되는(문제가 발생한) 컴퓨터에서의 셋팅 ] - 디버깅 당하는 컴퓨터
이 컴퓨터에는 보통 VS 2005가 설치되어있지 않아있을것이다.
그렇기 때문에 이쪽에서 실행된 프로그램을 개발한 컴퓨터에서 디버깅 하기위해
Remote Debugger가 필요하다.
위 프로그램은 VS 2005가 설치 될때 같이 설치되는데 VS 2005 CD에서 설치버전을 받아서 해도 되고, VS 2005가 설치된 컴퓨터에 VS 2005경로에서도 찾을수 있다.
경로
CD/DVD의 경우
DVD/CD2 ./Remote Debugger/x86또는x64/rdbgseup.exe 기본설치폴더시 C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\Remote Debugger |
이 두군데중 아무데서나 구해서 해당 컴퓨터로 복사를 시킨다.
Remote Debugger/x86/msvsmon.exe를 실행한다.
그럼 아마도 대부분의 컴퓨터에서 다음과 같은 그림을 볼수 있을것이다.
이 그림이 안보이셨다면 아랫부분은 잠시 건너띄어도 상관없지만
나오신 분들은 다음과 같이 해주시면 된다.
( 이부분이 나오지 않은 자료가 대부분이라 없어도 무방할수도 있을거 같긴하지만. 위에 글을 보면 디버깅할 수 없다고 나와있다. 그래서 난 고쳤고, 그리고 원격디버깅이 가능했다.)
제어판 -> 관리도구 -> 로컬 보안 정책 -> 로컬 정책 -> 보안 옵션 ->
네브워크 액세스 : 로컬 계정에 대한 공유 및 보안 등록정보
-> 일반 - 로컬사용자를 그대로 인증 선택
그리고 확인 을 누르시면 적용된다. 물론 이 상황에서는 재부팅을 해야한다.
재부팅후 다시 msvsmon.exe를 실행하면 이젠 위와 같은 창이 안뜰것이다.
그리고 다음과 같은 그림을 보게 될것이다.
가운데걸 선택하면 내부망으로써 원격디버깅이 가능해진다. 외부에서라면 당연히 세번째 것일테다.
이와 같이 설정이 끝나면 이제 아래와 같은 화면이 보일것이고,
그리고 도구->옵션을 누르면 그 밑에 달린 창이 보일것이다. 그 창에서 빨간 박스안에 값으로 셋팅한다.
여기까지 끝났다면 원격 대상이 되는 (프로그램실행시 문제가 되는) 컴퓨터의 셋팅은 끝이다.
이제 여기에 원격컴퓨터로 디버깅을 연결하면 아래와 같이
원격 디버깅 모니터에 접속했다는 메시지가 보일것이다.
[ 원격디버깅을 시도할 컴퓨터에서의 셋팅 ]
VS 2005를 실행시키고 디버깅을 시도할 프로젝트를 연다.
그리고 도구->프로세스에 연결 을 연다.
그리고 아래와 같이 셋팅해주면 원격접속이 될 것이다.
이제 실제 디버깅을 하고자하는 프로세서를 [ 사용 가능한 프로세스 ]에서 선택한후 연결하여
이전에 설정하였던 프로그램실행시 문제가 발생되는 컴퓨터에서 문제가 발생하는 상황을 만든후
디버깅을하는 컴퓨터에서 디버깅을 해보면 된다.
어찌보면 참 간단한건데.. 말이 길어졌다;; 말을 최대한 헷갈리지 않게 쓰려고 노력했는데
다른 누가 보더라도 도움이 되셨으면 한다.
당연한 사실이지만 한가지 덧붙이자면
Release로 된 프로그램을 실행하는것이기에 디버깅시 난해할 수도 있지만
문제점은 확실히 찾을수 있기에 해보면 좋다는것을 느낄것이다.
아아 하나 빼먹었는데 원격디버깅이 끝나면 당연히 위의 [프로세스에 연결]에서
전송은 기본값으로 다시 정해줘야한다
Original :http://blog.naver.com/sdragoon/150033514572
'Programming Tip' 카테고리의 다른 글
Observer Pattern (0) | 2011.07.13 |
---|---|
[Digging] Memory Leak Detecting (0) | 2011.01.26 |