다음을 통해 공유


자동으로 서비스 애플리케이션 디버깅

서비스 애플리케이션이 시작될 때 디버거를 자동으로 시작할 수 있습니다. 또는 서비스 애플리케이션에서 예외가 발생하거나 DebugBreak 명령을 실행할 때 자동으로 시작될 수 있습니다. 이러한 방법 중 하나를 선택한 경우 이 항목에서는 진행 방법을 설명합니다. 어떤 방법을 선택해야 할지 잘 모르는 경우 최상의 방법 선택을 참조하세요.

그런 다음, 다음 절차를 따릅니다.

  1. 다음 준비 단계 중 하나를 수행합니다.

  2. 서비스가 이미 실행 중인 경우 이러한 변경 내용을 적용하려면 서비스를 다시 시작해야 합니다. 실행 중인 서비스의 영향을 제거하려면 Windows 자체를 다시 시작하는 것이 좋습니다. Windows를 다시 시작하지 않으려면 ServiceName 이 서비스의 이름인 다음 명령을 사용합니다.

    net stop ServiceName 
    net start ServiceName 
    
  3. 서비스 애플리케이션의 초기화 코드를 디버그하도록 선택한 경우 서비스가 시작될 때 디버거가 시작되고 서비스 애플리케이션에 연결됩니다.

    예외에 의해 디버거를 트리거하도록 선택한 경우 서비스 애플리케이션은 예외가 발생하거나 DebugBreak 함수를 실행할 때까지 정상적으로 실행됩니다. 이 시점에서 디버거가 시작되고 서비스 애플리케이션에 연결됩니다.

  4. 다음 단계는 1단계에서 지정한 디버거 명령줄에 따라 달라집니다.

    • 원격 옵션 없이 디버거를 지정한 경우 이 디버거가 시작되고 해당 창이 표시됩니다.
    • -server 및 -noio 옵션을 사용하여 NTSD를 지정한 경우 콘솔 창 없이 NTSD가 시작됩니다. 그런 다음 -remote 매개 변수를 사용하여 사용자 모드 디버거를 시작하여 다른 컴퓨터에서 디버깅 세션에 연결할 수 있습니다. 자세한 내용은 디버깅 클라이언트 활성화를 참조하세요.
    • -d 옵션으로 NTSD를 지정한 경우 콘솔 창 없이 NTSD가 시작됩니다. 그런 다음 다른 컴퓨터에서 실행되는 커널 디버거를 사용하여 디버깅 세션에 연결할 수 있습니다. 자세한 내용은 커널 디버거에서 User-Mode 디버거 제어를 참조하세요.
    • -ddefer 및 -server 옵션을 사용하여 NTSD를 지정한 경우 콘솔 창 없이 NTSD가 시작됩니다. 그런 다음, 서비스와 다른 컴퓨터에서 실행되는 커널 디버거와 사용자 모드 원격 디버거를 모두 사용하여 디버깅 세션에 연결할 수 있습니다(서로 동일한 컴퓨터일 수 있음). 자세한 내용은 이 메서드와 원격 디버깅 결합을 참조하세요.
  5. 디버거가 시작되면 서비스는 초기 프로세스 중단점, 예외 또는 DebugBreak 명령에서 일시 중지됩니다. 이렇게 하면 서비스 애플리케이션의 현재 상태를 검사하고 중단점을 설정하며 원하는 다른 구성을 선택할 수 있습니다.

  6. g(Go) 또는 다른 실행 명령을 사용하여 서비스 애플리케이션의 실행을 다시 시작합니다.

참고 항목

DebugBreak 함수