실행 중인 서비스에만 디버거를 연결할 수 있습니다. 연결 프로세스는 서비스의 현재 작동을 중단시키지만 실제로 서비스의 처리를 중지하거나 일시 중지하지는 않습니다. 즉 디버깅을 시작할 때 서비스가 실행 중이면 디버깅하는 동안 서비스가 기술적으로는 시작된 상태이지만 서비스의 처리는 중단됩니다.
서비스의 프로세스에 연결하여 대부분의 서비스 코드를 디버깅할 수 있지만 모든 서비스 코드를 디버깅할 수 있는 것은 아닙니다. 예를 들어, 서비스가 이미 시작되었기 때문에 서비스의 OnStart 메서드에 있는 코드를 디버깅할 수 없고 서비스를 로드하는 데 사용되는 Main 메서드에 있는 코드도 디버깅할 수 없습니다. 문제를 해결하는 방법 중 하나는 서비스 응용 프로그램에 디버깅을 보조하는 용도로만 사용할 임시 보조 서비스를 만드는 것입니다. 두 서비스를 모두 설치한 다음 이 "더미" 서비스를 시작하여 서비스 프로세스를 로드할 수 있습니다. 일단 임시 서비스가 이 프로세스를 시작하면 Visual Studio에 있는 디버그 메뉴를 사용하여 서비스 프로세스에 연결할 수 있습니다.
프로세스에 연결하고 나면, 중단점을 설정하고 그러한 중단점을 사용하여 코드를 디버깅할 수 있습니다. 프로세스에 연결하기 위한 대화 상자를 닫으면 곧바로 디버그 모드로 전환됩니다. 설정한 각 중단점에서 코드 실행이 멈추도록 서비스 제어 관리자를 통해 서비스를 시작, 중지, 일시 중지 또는 계속할 수 있습니다. 디버깅을 성공적으로 마친 후 이 더미 서비스를 제거합니다.
서비스를 디버깅하려면
-
서비스를 설치합니다. 자세한 내용은 방법: 서비스 설치 및 제거를 참조하십시오.
-
서비스 제어 관리자, 서버 탐색기 또는 코드에서 서비스를 시작합니다. 자세한 내용은 방법: 서비스 시작을 참조하십시오.
-
Visual Studio의 디버그 메뉴에서 프로세스를 선택합니다.
프로세스 대화 상자가 나타납니다.
-
시스템 프로세스 표시를 클릭합니다.
-
사용 가능한 프로세스섹션에서 서비스에 대한 프로세스를 클릭한 다음 연결을 클릭합니다.
-
적절한 옵션을 선택한 다음 확인을 클릭하여 대화 상자를 닫습니다.
-
코드에서 사용할 중단점을 설정합니다.
-
서비스 제어 관리자에 액세스하여 각 중단점에서 코드 실행을 멈추도록 서비스를 중지, 일시 중지, 계속하기 위한 명령을 보내어 서비스를 조작합니다. 서비스 제어 관리자 실행에 대한 자세한 내용은 방법: 서비스 시작을 참조하십시오.
참고 항목
참고 : http://msdn.microsoft.com/ko-kr/library/7a50syb3(v=vs.90).aspx
'C#' 카테고리의 다른 글
TextBox에 숫자만 입력되도록 하는방법 (0) | 2016.04.18 |
---|---|
커서의 위치를 취득하는 방법 (0) | 2013.01.28 |
서비스 응용 프로그램에 설치 관리자 추가 (0) | 2013.01.21 |
구성 요소 디자이너에서 Windows 서비스 응용 프로그램 만들기 (0) | 2013.01.21 |
System.Windows.Forms.ControlPaint 클래스의 FillReversibleRectangle 메서드를 이용해서 반전 (0) | 2012.12.25 |