次の方法で共有


サービスのデバッグ

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

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

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

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

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion

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

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

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

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

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

Windows 用デバッグ ツール