다음을 통해 공유


서비스 애플리케이션을 디버그하는 가장 좋은 방법 선택

서비스 애플리케이션을 디버그하는 방법에는 여러 가지가 있습니다. 올바른 방법을 선택하려면 먼저 디버거가 서비스 애플리케이션에 연결된 시간과 사용할 디버깅 구성이라는 두 가지 선택을 해야 합니다.

디버거를 서비스 애플리케이션에 연결할 수 있는 세 가지 단계가 있습니다.

  • 서비스의 초기 시작입니다. 서비스가 시작될 때 디버거가 자동으로 시작됩니다. 서비스의 초기화 코드를 디버그하려면 이 옵션을 선택합니다.

  • 서비스에서 예외가 처음 발생하는 경우입니다. 예외 또는 크래시가 발생하거나 서비스 애플리케이션이 DebugBreak 함수를 호출하는 경우 디버거가 자동으로 시작됩니다. 문제가 발생했을 때만 디버거를 표시하려면 이 옵션을 선택합니다.

  • 서비스가 정상적으로 실행된 후 언제든지 이미 실행 중인 서비스에 디버거를 수동으로 연결할 수 있습니다. 디버깅을 미리 준비하지 않으려면 이 옵션을 선택합니다.

세 가지 디버깅 구성을 선택할 수 있습니다.

  • 로컬 디버깅. 서비스와 동일한 컴퓨터에서 실행되는 단일 디버거입니다.

  • 원격 디버깅. 서비스와 동일한 컴퓨터에서 실행되는 디버깅 서버로, 두 번째 컴퓨터에서 실행되는 디버깅 클라이언트에서 제어됩니다.

  • 커널 제어 사용자 모드 디버깅. 서비스와 동일한 컴퓨터에서 실행되는 사용자 모드 디버거로, 두 번째 컴퓨터의 커널 디버거에서 제어됩니다.

서비스가 Windows Vista 또는 이후 버전의 Windows에서 실행되는 경우 이러한 선택 항목을 결합하는 방법에 대한 한 가지 제한 사항이 있습니다. 서비스 시작 시작부터 또는 예외가 발생한 시점부터 디버그하려면 원격 디버깅 또는 커널 제어 사용자 모드 디버깅을 사용해야 합니다.

즉, 서비스가 이미 실행된 후 디버거를 수동으로 연결하려는 경우가 아니면 로컬 디버깅을 사용할 수 없습니다. 이러한 제한은 이러한 버전의 Windows에서 서비스가 세션 0에서 실행되고 서비스에 자동으로 시작되고 서비스에 연결된 모든 디버거도 세션 0에 있으며 서비스가 실행 중인 컴퓨터에 사용자 인터페이스가 없다는 사실에서 비롯됩니다.