サービスのデバッグ

次のいずれかの方法を使用して、サービスをデバッグできます。

  • デバッガーを使用して、実行中にサービスをデバッグします。 まず、サービス プロセスのプロセス識別子 (PID) を取得します。 PID を取得したら、実行中のプロセスにアタッチします。 構文情報については、デバッガーに含まれているドキュメントを参照してください。

  • DebugBreak 関数を呼び出して、Just-In-Time デバッグのためにデバッガーを呼び出します。

  • プログラムの起動時に使用するデバッガーを指定します。 これを行うには、次のレジストリの場所に Image File Execution Options という名前のキーを作成します。

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion

    サービスと同じ名前のサブキーを作成します (たとえば、MYSERV.EXE)。 このサブキーに、Debugger という名前の REG_SZ 型の値を追加 します。 デバッガーへの完全パスを文字列値として使用します。 [サービス] コントロール パネル アプレットで、サービスを選択し、[スタートアップ] をクリックし、[サービスがデスクトップと対話できるようにする] をチェックします。 サービスは対話型サービスである必要があります。そうしないと、デバッガーは既定のデスクトップで実行できません。 すべてのサービスは、サービス専用に予約され、ユーザー インターフェイスの表示をサポートしていないセッションで実行されるため、この手法は Windows Vista ではサポートされなくなりました。

  • イベント トレースを使用して情報をログに記録します。

自動開始サービスの初期化コードをデバッグするには、需要開始サービスとしてサービスを一時的にインストールして実行する必要があります。

場合によっては、デバッグ目的でコンソール アプリケーションとしてサービスを実行することが必要になる場合があります。 このシナリオでは、 StartServiceCtrlDispatcher 関数は ERROR_FAILED_SERVICE_CONTROLLER_CONNECTを返します。 そのため、このエラーが返されるときにサービス固有のコードが呼び出されないようにコードを構成してください。

サービス アプリケーションのデバッグ

Windows 用デバッグ ツール