サービスのデバッグ

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

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

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

  • プログラムの開始時に使用するデバッガーを指定します。 これを行うには、次のレジストリの場所に イメージ ファイル実行オプションという 名前のキーを作成します。

    HKEY _ LOCAL MACHINE SOFTWARE Microsoft Windows NT _ \ \ \ \ CurrentVersion

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

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

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

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

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

Windows 用デバッグ ツール