리모트 디버깅은 컴퓨터 2대를 네트워크로 연결해서 디버깅을 하는 방법으로 특히
DirectX를 사용하는 응용프로그램을 디버깅하기에 편리하다. DirectX 응용 프로그
램의 경우 화면 전체를 쓰는 경우가 많은데 이 때 에러가 발생하면 디버깅이 매우
어렵거나, 시스템이 다운되거나 키보드나 마우스 조작이 불가능한 경우가 생길 수
있다. 그러나 리모트 디버깅을 쓰면 대부분의 이런 위험한 상황을 비켜갈 수 있다.
비주얼스튜디오등에서 이를 지원하고 있다.
—————————————————————————–
비주얼 스튜디오(비주얼C++)에서 리모트 디버깅 준비하기..
먼저 개발용 컴퓨터의 이름을.. MyCom 이라고 가정하겠습니다. (비주얼스튜디오
띄울 컴퓨터) 그리고 디버깅용 컴퓨터를 DebugCom 이라고 가정할께요.. (응용 프로
그램이 실행될 컴퓨터)
일단 컴퓨터 2대가 TCP/IP로 연결되어 있어야 되고요. IP 주소는 물론 알고 있겠
죠? 그리고 네트워크환경 설정에서 “Microsoft 파일 및 프린터 공유 서비스”가 깔
려 있어야 되고요..
MyCom 주로 윈도우즈2000 을, DebugCom은 윈도우즈 98,Me,2000 등 다양하게 씁니
다.근데, DebugCom이 윈2000일 경우에는 비주얼스튜디오에 서비스팩을 깔아야 됩니
다. 마이크로소프트 홈페이지에 가면 현재 비주얼스튜디오(또는 비주얼 C++) 서비
스팩5 까지 나와 있습니다.
—————————————————————————–
그 다음엔,, DebugCom 컴퓨터 설정을 해야 되는데요.. 응용프로그램이 실행될 폴
더를 하나 만들고 그 폴더를 공유합니다. 그리고 응용프로그램에 필요한 리소스(이
미지나 사운드등..)를 미리 복사해 놓습니다. 폴더경로를 C:\Test\ 라고 가정하겠
습니다.
MyCom 에서 위에서 공유설정을 한 폴더를 네트워크 드라이브 Z: 로 연결합니다.(
꼭 연결할 필요는 없지만 설명하거나 설정하기가 쉬워서 저는 그렇게 사용을 많이
합니다.)
그리고 리모트 디버깅에 필요한 실행파일을 MyCom에서 DebugCom으로 복사해야 합
니다.
MyCom에 비주얼스튜디오 깔린 곳에 다음의 파일을 찾으세요. (기본 설정으로 깔
았으면,, C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin에서.. )
MSVCMON.exe DM.DLL MSDIS110.DLL TLN0T.DLL
위의 파일들을 DebugCom의 적당한 곳에 폴더를 하나 만들어 복사합니다. (어디다
만들어도 상관없음)
MyCom의 System 폴더로 가서 다음의 파일을 찾으세요 (윈2000이면 C:\Winnt\Syst
em32\ 에서..)
MSVCP60.DLL msvcrt.dll psapi.dll
위의 파일들을 DebugCom의 시스템 폴더( C:\Windows\System32\ 나 C:\Winnt\Syste
m32\ )로 복사하세요. (또는, MSVCMON.exe 와 같은 폴더에 넣어도 됩니다.)
이제 부터는 디버깅 준비입니다.
DebugCom에서 디버그모니터 프로그램( msvcmon.exe )을 실행합니다. 처음 실행한
경우에는 Settings를 눌러 Target machine name or address에 MyCom 이라고 적어
줍니다. (혹은 IP 주소를 직접 입력합니다. ) “Connect” 버튼을 눌러 줍니다. Conn
ecting… 이라는 작은 다이얼로그 박스가 띄면 준비가 끝난 겁니다.
—————————————————————————–
MyCom에서 비쥬얼스튜디오(또는 비주얼C++)를 띄웁니다. 작업중이던 웍스페이스
를 엽니다.(없으면 만들어야 겠죠… ) 웍스페이스 폴더를 C:\Project\Test\ 라고
가정하겠습니다. 기본 설정이면 실행파일이 생성되는 위치가 C:\Project\Test\Debu
g\ 일 겁니다. 실행파일명은 Test.exe 라고 가정하죠.
비주얼스튜디오에서 ALT+F7을 눌러 프로젝트 셋팅을 엽니다.
Debug 탭을 누릅니다.
Excutable for debug Session: 에 C:\Project\Test\Test.exe 라고 적혀 있는 지
확인합니다.
Working Directory:를 C:\Test\ 로 설정하세요. (또는 \\DebugCom\Test\ 라고 적
어도 됨. 안적어도 되는 경우도 있음.)
Remote excutable path and file name: 을 C:\Test\Test.exe 라고 적습니다.
(또는 \\DebugCom\Test\Test.exe 라고 적어도 됨)
Post-build Step 탭을 누릅니다. (맨 마지막에 있습니다.)
Post-build command(s):에 copy Debug\Test.exe Z: 라고 적습니다.
(또는 copy Debug\Test.exe \\DebugCom\Test\ 라고 적어줘도 됩니다. 만약 경로명
에 공백이 있는 경우에는 큰따옴표로 묶어 주어야 합니다. 예: copy Debug\Test.ex
e “\\DebugCom\My Project\Test\” 경로명이 길 때는 프로젝트가 있는 폴더에 배치
파일을 만들어 호출하는 것도 좋은 방법이 될 수 있습니다.)
OK를 눌러 프로젝트 셋팅에서 빠져 나옵니다.
비주얼스투디오의 메뉴에서 Build->Debugger Remote Connection을 누릅니다. Conne
ction에 Local로 되어 있을 겁니다. 이걸 Network(TCP/IP)로 바꿉니다. Settings.
.. 버튼을 눌러 Targets machine name or address: 항목에 DebugCom 이라고 적습니
다. 또는 IP 주소를 직접 입력해도 됩니다. (예: 192.168.0.2) OK를 계속 눌러 빠
져 나옵니다.
(다시 로컬에서 디버깅 하고 싶을 땐 Connection을 로컬로 바꾸고 프로젝트 셋팅
에서 Working Directory를 원래대로 바꾸면 됩니다.)
이제 컴파일을 해야 됩니다. F7을 눌러 컴파일을 합니다. 소스에 에러가 없으면
Linking… 이라는 글자가 나오고,, 그 다음에 “1개 파일이 복사되었습니다.” 라고
나오면 프로젝트 셋팅은 일단 제대로 된 겁니다.
만약 “1개 파일이 복사되었습니다.” 라는 메세지가 안나오면 *.cpp 하나를 연 후
Ctrl-F7을 한번 누르고 다시 F7을 눌러 보세요. (Post-Build Command가 실행이 안
된 경우임.)
만약 “Error executing c:\winnt\system32\cmd.exe.” 이런 비슷한 에러 메세지가
나오면 Post-build command에서 경로명을 잘못 지정한 경우이거나, 공유된 폴더에
쓰기 권한이 없는 경우 등입니다.
이제 디버깅을 해 보죠. DebugCom에 디버그모니터 프로그램이 실행 중인지 다시
한번 확인 하고요..
비주얼 스튜디오에서 F5 를 눌러 디버깅을 시작합니다.
이때, Cannot find the application on the remote machine 이라는 에러가 나면
프로젝트 셋팅에서 Remote excutable path and file name: 을 잘못 적어 주었거나.
post-build command에서 경로명을 잘못 적어 준 경우 입니다.
Fild Local Module 이라는 창이 뜨면 “Try to locate other DLLs” 항목의 체크 옵
션을 끄고 Cancel을 눌러 줍니다.
별 문제 없으면 이제부터 디버깅을 하시면 됩니다.
—————————————————————————–
이제 부터 나는 에러는 대부분 응용 프로그램관련 에러 입니다. (예: MFC*.DLL을
찾는다던가..) 이미지나 리소스등을 못찾는 경우는.. 프로젝트 셋팅에서 Working
Directory를 잘못 지정한 경우가 많고요.. MS DirectX SDK 예제에서 이미지등을 못
찾는 경우는 디버그컴에 MSSDK를 깔아 주면 됩니다. MSSDK 깔때 레지스트리에 이미
지 경로 정보를 입력하거든요.. –; (아니면, 필요한 리소스를 적당한 곳에 복사하
고, 레지스트리에 적절한 경로를 넣어줘도 됩니다.)
리모트디버깅을 처음 테스트할 때는 간단한 ‘콘솔’프로그램으로 테스트 해 보는게
좋습니다.
그외, 네트워크 속도나 컴퓨터 성능, 어플리케이션 성격에 따라 조금씩 다르게
설정 할 수도 있습니다.
—————————————————————————–
작성일: 2000.11.4
수정: 2001.11.30 (거의 1년만에… -.-;;)
작성자: 차재천 (chaen@chollian.net, chaen@hitel.net, chaen@nownuri.net)
=============================================================================