次の方法で共有


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

更新 : 2007 年 11 月

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

7a50syb3.alert_caution(ja-jp,VS.90).gif注意 :

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

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

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

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

7a50syb3.alert_note(ja-jp,VS.90).gifメモ :

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

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

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

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

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

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

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

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

    7a50syb3.alert_note(ja-jp,VS.90).gifヒント :

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

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

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

    7a50syb3.alert_note(ja-jp,VS.90).gifメモ :

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

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

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

参照

処理手順

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

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

概念

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