Microsoft MVP성태의 닷넷 이야기
개발 환경 구성: 3.1. VS.NET 2003 원격 디버깅 설정 [링크 복사], [링크+제목 복사],
조회: 21645
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 
부모글 보이기/감추기
(연관된 글이 1개 있습니다.)
VS.NET 2003 - 원격 디버깅



VS.NET 2003으로 원격 디버깅 하는 방법을 설명해 보도록 하겠습니다.

우선, VS.NET 2003에서는 Managed 환경과 Unmanaged 환경에 대한 원격 디버깅 구성이 다릅니다. 따라서, ASP.NET / WinForm App에 대한 원격 디버깅과 VC++에 대한 원격 디버깅이 나뉘게 되는 데요. Managed 환경인 경우 "Machine Debug Manager"라는 NT Service 프로그램이 대상 컴퓨터에 설치되어 있어야 하는 반면, VC++은 MSVCMON.exe가 대상 컴퓨터에서 실행되어져 있어야 합니다. 그럼, 먼저 환경 구성부터 시작해 보도록 하겠습니다.

- 원격 디버그 대상이 될 PC에 "Machine Debug Manager" 설치
1. 원격 PC의 CD-ROM에 VS.NET 2003 설치 CD를 넣습니다. 또는 VS.NET 2003 설치 폴더에 대한 공유 폴더를 연결합니다.
2. 다음과 같이 MDM(Machine Debug Manager)를 설치합니다.
  X:\>msiexec /qb+ /i [drive]:\[vs.net2003 폴더]\vs_setup.msi NOVSUI=1 TRANSFORMS="[drive]:\[vs.net2003 폴더]\setup\rmt9x.mst" SERVER_SETUP=1 
ADDLOCAL=Full_Remote_Debugging

    ex) D:\>msiexec /qb+ /i d:\english\vs.net2003\vs_setup.msi NOVSUI=1 TRANSFORMS="d:\english\vs.net2003\setup\rmt9x.mst" SERVER_SETUP=1 
ADDLOCAL=Full_Remote_Debugging

3. 간혹, 위와 같은 msiexec.exe를 통해서 설치가 안되는 경우가 있습니다. 그런 경우에는 VS.NET 2003 설치 파일인 setup.exe를 실행한 후, 대상 PC에 "원격 디버거" 구성 요소만을 선택해서 설치하실 수 있습니다.

VS.NET 2003 원격 디버거 설치

4. 서비스 관리자에서 "Machine Debug Manager"가 "시작됨" 상태인지 확인합니다. 만약 시작되지 않았다면 시작시킵니다.


- 원격 디버그 대상이 될 PC에 "MSVCMON.EXE" 설치
1. 셋업 파일을 통해서 설치를 했다면 VS.NET 2003이 설치된 폴더에 다음과 같은 폴더에 msvcmon.exe가 있는 것을 확인하실 수 있습니다.
   "C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\Packages\Debugger"
사실, MDM 때문에 설치 과정이 필요했을 뿐이고 만약 VC++ 원격 디버깅을 위해 msvcmon.exe만 사용할 경우라면 굳이 셋업 과정을 거칠 필요없이, 위의 폴더를 그대로 복사하는 것만으로도 msvcmon.exe는 정상적으로 실행이 되어집니다. 실제로, msvcmon.exe가 실행되는 데에는 다음과 같은 3가지 파일이 하나의 폴더에만 같이 있으면 가능합니다.

msvcmon.exe
NatDbgDM.dll
NatDbgTLNet.dll

간단하죠. ^^ 그럼, 개발자 PC에서 해당 원격 PC에 대해서 "원격 디버깅"을 진행해 보도록 하겠습니다. ASP.NET과 WinForm App에 대해 각각 설명해 볼텐데요. (둘다 방법은 크게 다르지 않습니다.)

- ASP.NET 원격 디버깅
1. 원격 PC에 디버그하려는 웹 사이트에 대한 소스를 모두 복사합니다. 물론, dll과 pdb 파일 및 aspx 파일만 복사해도 무방합니다. 만약, 실서버에 대한 디버그를 하는 경우라면 이미 복사된 상태이겠지요.

2. 복사된 소스에 대해 원격 PC의 IIS 관리자에서 동일하게 웹 사이트 구성을 합니다. 가능한 개발자 PC에서와 동일한 가상 디렉터리 구조로 유지하시는 것이 좋겠지요.

3. 제가 가장 좋아하는 "F5 디버깅" 방식이 아쉽게도 ASP.NET에서는 가능하지 않습니다. (제가 방법을 모르는 것일 수도 있습니다.) 따라서, ASP.NET을 디버깅할 때에는 "Attach to Process"라는 방식을 사용해야 합니다. "디버그" 메뉴 / "프로세스" 메뉴를 선택하면, 다음 화면과 같이 "프로세스" 대화창이 뜹니다. "전송 모드"는 그대로 "기본값"을 사용하고, "이름"에는 원격지 PC의 이름이나 IP를 입력한 후, "Enter" 키를 치거나, "연결" 버튼을 누르면, "사용가능한 프로세스"에 다음과 같이 대상 컴퓨터에서 실행중인 프로세스 목록이 나옵니다.

Attach to process...

4. 물론, 그 전에 해당 원격지 PC에서 이미 ASP.NET 웹 페이지를 한번이라도 실행시켰어야 합니다. 그렇게 되면, w3wp.exe가 프로세스 목록에 보이게 되고, 그 프로세스를 선택 후, "연결" 버튼을 눌러주면 다음과 같은 창이 뜨게 됩니다.

디버그 유형

5. 당연히, "Common Language Runtime"을 체크해 두고 "확인" 버튼을 눌러주시면 됩니다. 이제, 원하는 페이지에 "중단점"을 설정하고, 원격지 웹 사이트에 해당 aspx 페이지를 IE에서 불러주면 정상적으로 디버깅이 가능하게 됩니다.

- WinForm 원격 디버깅
1. 위의 ASP.NET 원격 디버깅에서 했던 방식과 동일하게 "Attach to Process" 방식을 사용할 수 있습니다. IIS 구성 등이 필요없기 때문에 사실 더욱 간단한데요. 단지, 원격지 컴퓨터에서 해당 WinForm Application을 복사해서 실행시켜 놓기만 하면 ASP.NET 원격 디버깅 방식과 동일하게 진행될 수 있습니다.

2. "Attach to Process" 방식 이외에도, WinForm 응용 프로그램에서는 "F5 디버깅" 방식도 가능합니다. 이런 경우에는 원격지 PC에서 미리 WinForm 응용 프로그램을 실행시켜 두지 않고도 VS.NET IDE 상에서 "F5" 키를 누르는 것으로 원격지 PC에서 프로그램을 실행시켜서 자동으로 디버거를 붙일 수 있도록 하고 있습니다. 구성 방법도 제법 간단합니다. "프로젝트 속성" 창을 열어서 다음과 같은 항목들을 설정해 줍니다.

WinForm 응용 프로그램 원격 디버그 설정
 원격 디버깅 사용 : True
 원격 디버깅 컴퓨터 : [원격 PC 명 또는 IP ]
 디버그 모드 : "프로그램"
 시작 응용 프로그램 : [원격 PC에 복사한 WinForm 응용 프로그램의 경로]
3. 위와 같이 설정하고, 그대로 "F5" 키를 눌러주기만 하면, 원격 PC에 "시작 응용 프로그램" 에 지정한 경로의 응용 프로그램이 실행되면서 자동으로 디버거와 연결이 됩니다. 마치 로컬에서 디버깅하는 것과 같은 착각을 일으키게 합니다.

- Visual C++ 원격 디버깅
1. "원격 디버그 대상이 될 PC"에 "MSVCMON.EXE 설치"에서 언급한 데로, 원격지 PC에 msvcmon.exe를 설치한다음, 명령행에서 다음과 같이 실행합니다.
  Named Pipe 모드로 실행
    C:\>msvcmon.exe

  TCP/IP 모드로 실행
    C:\>msvcmon.exe -tcpip
TCP/IP가 보안상 취약한 점이 있지만 보다 빠른 디버깅 속도를 냅니다. 개인적으로는, 아무리 TCP/IP 모드가 보안상 취약하다고는 해도 간단히 디버깅만 하는 것이므로 TCP/IP를 즐겨쓰곤 합니다. 더군다나 connection이 이뤄졌을 때 해당 로그가 아래와 같이 화면에 남기 때문에 크게 걱정할 수준은 아니라고 봅니다.

접속 로그

2. WinForm 원격 디버깅에서와 마찬가지로 VC++ 응용 프로그램을 원격 PC에 복사합니다.

3. Visual C++도, WinForm 원격 디버깅과 마찬가지로 "Attach to Process..." 기능은 그대로 사용이 가능합니다. 단지 다른 것이 하나 있다면, "전송 모드" 설정을 "TCP/IP(네이티브 전용)" 또는 "파이프(네이티브 전용)"으로 설정해야 한다는 차이만 있습니다.

4. "F5 디버깅" 역시 WinForm 원격 디버깅과 크게 다르지 않습니다. "프로젝트 속성창"에서 다음과 같이 설정해 주면 됩니다.
   연결 : [원격지 컴퓨터에서 실행한 msvcmon.exe 연결 방식을 지정]
   원격 컴퓨터 : [원격 컴퓨터 명 또는 IP]
   원격 명령 : [원격 PC에 복사한 VC++ 응용 프로그램의 경로]
예를 들어, 다음 화면과 같이 지정해 주시면 됩니다.

MFC 원격 디버그 설정

5. 이걸로 설정은 끝이 납니다. "F5" 키를 누르면 VS.NET 2003은 원격지 컴퓨터에서 해당 프로그램을 구동시키고 VS.NET 디버거와 연결시킵니다.
여기까지 VS.NET 2003에서의 원격 디버깅 설정을 마쳤습니다.
[연관 글]






[최초 등록일: ]
[최종 수정일: 6/25/2021]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




[1]  2  3  4  5  6  7  8  9  10  11  12  13  14  15  ...
NoWriterDateCnt.TitleFile(s)
13610정성태4/28/2024214닷넷: 2251. C# - 제네릭 인자를 가진 타입을 생성하는 방법 - 두 번째 이야기
13609정성태4/27/2024242닷넷: 2250. PInvoke 호출 시 참조 타입(class)을 마샬링하는 [IN], [OUT] 특성파일 다운로드1
13608정성태4/26/2024432닷넷: 2249. C# - 부모의 필드/프로퍼티에 대해 서로 다른 자식 클래스 간에 Reflection 접근이 동작할까요?파일 다운로드1
13607정성태4/25/2024556닷넷: 2248. C# - 인터페이스 타입의 다중 포인터를 인자로 갖는 C/C++ 함수 연동
13606정성태4/24/2024708닷넷: 2247. C# - tensorflow 연동 (MNIST 예제)파일 다운로드1
13605정성태4/23/2024815닷넷: 2246. C# - Python.NET을 이용한 파이썬 소스코드 연동파일 다운로드1
13604정성태4/22/2024867오류 유형: 901. Visual Studio - Unable to set the next statement. Set next statement cannot be used in '[Exception]' call stack frames.
13603정성태4/21/2024959닷넷: 2245. C# - IronPython을 이용한 파이썬 소스코드 연동파일 다운로드1
13602정성태4/20/2024980닷넷: 2244. C# - PCM 오디오 데이터를 연속(Streaming) 재생 (Windows Multimedia)파일 다운로드1
13601정성태4/19/20241000닷넷: 2243. C# - PCM 사운드 재생(NAudio)파일 다운로드1
13600정성태4/18/20241015닷넷: 2242. C# - 관리 스레드와 비관리 스레드
13599정성태4/17/2024951닷넷: 2241. C# - WAV 파일의 PCM 사운드 재생(Windows Multimedia)파일 다운로드1
13598정성태4/16/2024995닷넷: 2240. C# - WAV 파일 포맷 + LIST 헤더파일 다운로드2
13597정성태4/15/20241003닷넷: 2239. C# - WAV 파일의 PCM 데이터 생성 및 출력파일 다운로드1
13596정성태4/14/20241121닷넷: 2238. C# - WAV 기본 파일 포맷파일 다운로드1
13595정성태4/13/20241074닷넷: 2237. C# - Audio 장치 열기 (Windows Multimedia, NAudio)파일 다운로드1
13594정성태4/12/20241096닷넷: 2236. C# - Audio 장치 열람 (Windows Multimedia, NAudio)파일 다운로드1
13593정성태4/8/20241095닷넷: 2235. MSBuild - AccelerateBuildsInVisualStudio 옵션
13592정성태4/2/20241233C/C++: 165. CLion으로 만든 Rust Win32 DLL을 C#과 연동
13591정성태4/2/20241210닷넷: 2234. C# - WPF 응용 프로그램에 Blazor App 통합파일 다운로드1
13590정성태3/31/20241091Linux: 70. Python - uwsgi 응용 프로그램이 k8s 환경에서 OOM 발생하는 문제
13589정성태3/29/20241197닷넷: 2233. C# - 프로세스 CPU 사용량을 나타내는 성능 카운터와 Win32 API파일 다운로드1
13588정성태3/28/20241550닷넷: 2232. C# - Unity + 닷넷 App(WinForms/WPF) 간의 Named Pipe 통신 [2]파일 다운로드1
13587정성태3/27/20241398오류 유형: 900. Windows Update 오류 - 8024402C, 80070643
13586정성태3/27/20241613Windows: 263. Windows - 복구 파티션(Recovery Partition) 용량을 늘리는 방법
[1]  2  3  4  5  6  7  8  9  10  11  12  13  14  15  ...