OnStart メソッドでは、できるだけ早く OnStart から戻ることができるように、すべての作業を実行するスレッドを開始するのに十分な init だけを行います。次に、スレッド デリゲートに Reddog のコードを追加して、デバッガーに割り込むことができます。おそらく、そこに thread.sleep を使用して、最初にプロセスにアタッチする時間を与えることができます。
もう 1 つの方法は、サービス クラスのインスタンスを作成して onstart/onstop を呼び出すことができる main メソッドをサービスに追加し、プロジェクトの出力をコンソール アプリに変更することです。その後、両方の長所を活用して、次のようにインストールします。 installutil を介してサービスを提供し、それを f5 で実行して、コンソール アプリとして Visual Studio でデバッグできます。
詳細はこちら
サービスをサービスとしてのみデバッグする場合は、OnStart メソッドが処理を実行するスレッドを開始してから戻ることをお勧めします。スレッド デリゲートは、Thread.Sleep(ある程度の時間)を実行してから戻ります。 Debugger.Break();
スレッド スリープにより、サービス コントロール マネージャーを使用してサービスを開始した後、デバッガーをプロセスにアタッチする機会が与えられます。次に、Debugger.Break() に到達し、デバッガーを強制的に中断して、シングル ステップを実行できるようにします。重要なことは、30 秒前に OnStart から戻り、ブレークポイントに到達する前にデバッガーをプロセスにアタッチすることです。
また、Debugger.Break はデバッガーをアタッチするオプションを提供すると思いますので、コードで試してみてください (UI がないと想定されているため、サービスでうまく動作するかどうかはわかりません)。デリゲートに追加し、30 秒前にプロセスにアタッチします。