次の方法で共有


方法 : Windows サービス アプリケーションをデバッグする

サービスは、Visual Studio 内ではなく、サービス コントロール マネージャーのコンテキスト内から実行される必要があります。このため、サービスのデバッグは、他の種類の Visual Studio アプリケーションのデバッグに比べて複雑です。 サービスのデバッグを行うには、サービスを起動してから、サービスを実行しているプロセスにデバッガーをアタッチします。 これにより、Visual Studio のすべての標準デバッグ機能を使用して、アプリケーションをデバッグできるようになります。

ヒント

プロセスが強制終了される可能性もあるため、アタッチするプロセスの特性や、アタッチによる影響をよく理解している場合に限って、プロセスにデバッガーをアタッチしてください。 たとえば、システムは WinLogon プロセスがないと動作しないため、WinLogon プロセスにデバッガーをアタッチした後でデバッグを中止すると、システムは停止します。

デバッガーをアタッチできるのは、実行中のサービスだけです。 アタッチのプロセスは、サービスが現在実行している処理に割り込みを掛けます。実際にサービスの処理の停止や一時停止を行うのではありません。 つまり、実行中のサービスに対してデバッグを開始すると、デバッグの間、サービスは技術的には起動状態のままですが、処理は中断されます。

サービスのプロセスにデバッガーをアタッチすることにより、サービスの大部分のコードをデバッグできますが、デバッグできないコードもあります。たとえば、サービスが既に起動しているため、サービスの OnStart メソッドのコードや、サービスを読み込むときに使用する Main メソッドのコードは、この方法ではデバッグできません。 これに対処する方法の 1 つは、デバッグ専用の一時的な "ダミー" サービスを作成し、サービス アプリケーションに追加することです。 サービスを両方ともインストールし、"ダミー" サービスを起動してサービス プロセスを読み込むことができます。 "ダミー" サービスがプロセスを起動した後は、Visual Studio の [デバッグ] メニューで、サービス プロセスへのアタッチを行うことができます。

プロセスにデバッガーをアタッチした後で、ブレークポイントを設定し、設定したブレークポイントを使用してコードをデバッグできます。 プロセスへのアタッチに使用するダイアログ ボックスを閉じると、デバッグ モードが有効になります。 サービス コントロール マネージャーを使用して、サービスの開始、停止、一時停止、および再開を行うことができます。これによって、設定したブレークポイントにヒットします。 デバッグが完了したら、"ダミー" サービスを削除します。

注意

Windows サービス マネージャーでサービスの起動時間が 30 秒以内に制限されるため、OnStart メソッドのデバッグが困難な場合もあります。 詳細については、「Windows サービスをデバッグする場合」を参照してください。

サービスをデバッグするには

  1. サービスをインストールします。 詳細については、「方法: サービスをインストールおよびアンインストールする」を参照してください。

  2. サービス コントロール マネージャーサーバー エクスプローラー、またはコードで、サービスを起動します。 詳細については、「方法 : サービスを開始する」を参照してください。

  3. Visual Studio で、[デバッグ] メニューの [プロセス] をクリックします。

    [プロセス] ダイアログ ボックスが表示されます。

  4. [システム プロセスを表示] をクリックします。

  5. [選択可能なプロセス] セクションでサービスのプロセスをクリックし、[アタッチ] をクリックします。

    ヒント

    プロセスの名前は、サービスの実行可能ファイルの名前と同じになります。

    [プロセスにアタッチ] ダイアログ ボックスが表示されます。

  6. 適切なオプションを選択し、[OK] をクリックしてダイアログ ボックスを閉じます。

    注意

    デバッグ モードになります。

  7. コード内で使用する任意のブレークポイントを設定します。

  8. サービス コントロール マネージャーを起動し、停止、一時停止、再開の各コマンドを送信してサービスを操作して、ブレークポイントをヒットします。 サービス コントロール マネージャーの実行方法の詳細については、「方法 : サービスを開始する」を参照してください。

参照

処理手順

方法: サービスをインストールおよびアンインストールする

方法 : サービスを開始する

概念

Windows サービス アプリケーションの概要