원격 디버깅툴 Remote_Debugee.zip |
vsjitdebugger.zip |
원격 디버깅에 대해서 공부를 하고, 실제로 사용해 보고 정리해 보았다.
이 내용은 내가 재홍이 형에게서 배운 내용을 정리하는 것이다. 재홍이 형에게 먼저 감사하다는 말을 하고 싶다. http://www.pyrasis.com 는 재홍이 형 사이트이다. “최근에 윈도우 프로젝트 필수 유틸리티”라는 책을 썼다. 윈도우 소프트웨어 제품을 만드시는 분들이 보면 좋은 책이다.
원격 디버깅에 좋은 점은 직접 내 pc에서 실행하지 않고, 문제가 발생한 pc에서 실행할 수 있다는 것이다. 문제가 발생한 환경에서 직접 재현하면서 trace 할 수 있다는 것이다. 소스와 개발 툴이 없는 pc에서 값을 보려면 메시지 박스나 printf로 볼 수 밖에 없다. 그 외에 DebugView를 이용하는 등 다른 방법이 있겠지만 직접 소스 코드를 trace하고 원하는 값을 보는 등의 디버깅 작업을 할 수 없는 게 안타깝다.
위에 문제를 원격 디버깅으로 한 방에 해결하자.
디버깅 대상 PC의 운영체제 : Windows XP
필요한 프로그램 : Visual Studio 2005, Visual Studio 원격 디버깅 모니터 툴
Visual Studio 2005를 설치했다면 “C:Program Files/Microsoft Visual Studio 8/Common7/IDE/Remote Debugger”에 가면 원격디버깅툴이있을 것이다. 64bit는 x64 폴더에 있을 것이다. 실행파일은 “msvsmon.exe”이다.
프로그램을 실행할 PC(test pc)에 디버깅 모니터 툴을 설치한다, 없다면 위에 x86 폴더나
x64폴더를 컴퓨터 환경에 맞게 그대로 복사해도 된다.
* 원격 디버깅 시작
- 프로그램 소스 중 멈출 곳 바로 위에 __debugbreak() 함수를 넣어준다.
(__debugbreak() 함수는 브레이크 포인트를 걸은 것과 같은 효과를 지닌다.)
- 컴파일하고 실행할 준비를 한다.
- “Visual Sutdio 원격 디버깅 모니터”를 실행한다.
- “Visual Studio 원격 디버깅 모니터 툴” >> “도구” >> “옵션”에 가자.
- “인증 안 함(네이티브 전용)”을 선택
- “모든 사용자가 디버깅할 수 있도록 허용”에 체크
- “최대 유휴 시간(초)”를 0으로 설정한다.
- 이제 프로그램을 실행하면 위와 같이 오류 관련 경고 윈도우가 뜬다.
- 디버깅할 PC에 Visual Studio 2005(이하 VS2005라 칭함)로 가자
- “도구” >> “프로세스에 연결”에 들어가자.
- “전송”에 “원격(네이티브 전용, 인증 안 함)”으로 설정한다.
- “한정자”에 디버깅하려고 하는 PC의 IP를 적는다.
- 이제 “사용 가능한 프로세스”에 디버깅 할 프로세스를 선택하고 “연결”을 누른다.
- 그리고 나서 아까 오류 관련 윈도우 경고 창이 뜬 곳에서 “보내지 않음”을 누른다.
- “중단”을 누르고 재미난 디버깅의 세계에 빠져들어 보자.
* 실행되는 PC에 운영체제가 Vista인 경우
Vista에서 오류 보고 윈도우가 안 뜰 수도 있고, 뜨더라도 프로그램이 종료되는 상황이 발생할 것이다. 예를 들어서 DLL이나 Service 프로그램을 디버깅할 때 말이다. 하지만 걱정하지 마시길~ Vista에 vsjitdebugger.exe 을 시스템 폴더(system32)에 설치하고 그 뒤에 vsjit.reg 파일을 레지스트리에 등록하면 된다. 그러면 아래와 같은 오류 보고 창에 “프로그램 디버그” 항목이 하나 더 뜨는데 그것을 누르면 된다.
VS2005에서 “도구” >> “프로세스에 연결”이 안될 수 있는데 그럴 때는 Visual Studio 원격 디버깅 모니터 툴을 관리자 권한으로 실행해야 한다. 그리고 해당 PC에 네트워크 연결이 안될 경우에는 방화벽 옵션을 해제하면 된다.
* Tip
- __debugbreak() 함수 대신에 getchar(), Sleep() 등을 사용해서 VS2005에서 attach를 할 수 있도록 해 주면 간편하게 원격 디버깅을 할 수 있다.
* 참고 사이트
Visual Studio의 디버깅
http://msdn.microsoft.com/ko-kr/library/sc65sadd(VS.80).aspx
운영체제가 윈도우 vista가 아니신가요..? 비스타 쓰신다면 형광 칠해진 부분 참고하세요.
출처: https://use1348.tistory.com/22 [유용한 정보:티스토리]
'유용한 정보' 카테고리의 다른 글
[VS2005] IE8 프로세스 디버깅하기 (0) | 2024.12.26 |
---|---|
[VC++]IE8 설치 시 VS2005에서 발생하는 스크립트 에러 (0) | 2024.12.26 |
[HTML]Textarea 입력 내용을 메일로 보낼때 줄바꿈 문제 (0) | 2024.12.26 |
[C++]2Gb 이상의 파일 처리 (0) | 2024.12.26 |
[C++]OS가 32비트인지 64비트인지의 여부 (0) | 2024.12.26 |