私はいくつかの作業を行うスレッド数を持つWindowsサービスを持っています。 イベントビューアで「Windowsサービスが予期せず終了しました」と表示されるまで、すべてのテストはうまくいっています。Windowsサービスが予期せず終了しました
これはどこで発生しているのかをデバッグしようとするとどうなりますか? 通常の状況では例外がキャッチされますが、この場合は例外がありません。
どこから始めたらいいですか?
JD。ここ
私はいくつかの作業を行うスレッド数を持つWindowsサービスを持っています。 イベントビューアで「Windowsサービスが予期せず終了しました」と表示されるまで、すべてのテストはうまくいっています。Windowsサービスが予期せず終了しました
これはどこで発生しているのかをデバッグしようとするとどうなりますか? 通常の状況では例外がキャッチされますが、この場合は例外がありません。
どこから始めたらいいですか?
JD。ここ
を見つけることができます。サービスが起動すると、Visual Studioデバッガを起動するように求められます。デバッガが開くと、そこからデバッグできます。
私が持っている問題は、Windowsサービスが死んでしまい、再現できないということです。デバッグはどのように役立つでしょうか? 未処理の例外がどこかにスローされています。私は自分のコードでtry/exceptsを持っていますが、例外が捕捉されていないことは明らかです。 –
サービスが少なくともあなたのOnStart()コールバックに入っているなら、私が言ったようにDebugger.Break()を呼び出してください。デバッガがポップアップしてブレークポイントで停止するとすぐに、[デバッグ]メニューの[例外]オプションを選択します。 Common Language Runtime ExceptionsのThrown列の下にあるチェックボックスをクリックします。デバッグセッションを続行すると、デバッガは、キャッチされた場所とは対照的に、が投げられた場所であるを破棄します。 –
サービスのエントリポイント関数にDebugger.Break()呼び出しを配置することもできます。これは、OnStart()コールバックよりもはるかに早い起動プロセスです(明らかに)。あなたのOnStart()コールバックにしない場合に備えてこれを行います。 –
あなたのOnStart()コールバックで)System.Diagnostics.Debugger.Break(への呼び出しを入れてHow to: Debug Windows Service Applications
アンマネージドライブラリを使用していますか? –