バックグラウンドスレッドで実行され、Dispatcher.BeginInvoke()を使用して処理が完了したときにUIスレッドのImageコントロールを更新する画像処理コードがあります。アプリケーションをデバッガの外で実行していると、かなり頻繁にクラッシュします。私がデバッガでそれを実行するとすぐに、私はそれがまったく起こることができません。どうやらタイミング差は私の人生を悲惨なものにするのに十分である;-)デバッグ中には発生しない例外をキャッチする方法はありますか?
私は、関連すると思われるコードの周りにtry/catchブロックを置いてみたが、何らかのエラー私の前を滑り続け、どこを見るか分からない。
私は、デバッガの例外捕捉動作を例外がスローされるたびに破棄するように設定したいと考えていましたが、デバッグ中に例外が発生することができないため、投げ。
私はクラッシュしたプロセスにアタッチすることができます(画面上にあるので、完全に反応しません)、デバッガを一時停止して、各スレッドがコード内のどこにあるかを確認しますが、どのような例外がスローされているのか
進め方についてのご意見はありますか?
編集:
- 私が考えることができるように私はできるだけ多くの場所でDBGVIEWでSystem.Diagnostics.Trace.WriteLine()を使用してきました。私はそれが例外が発生していると思われる場所を追跡することができますが、私は見つけることができません何が重要であるかは、です。
- メモリリークを追跡するのにWinDBG + SOSを使用しましたが、見つけにくい例外を追跡しませんでした。誰もがこの容量でWinDBG + SOSを使うためのリソースを提案できますか?
デバッガを接続せずに、デバッグまたはリリースビルド(設定)でクラッシュしますか? – RobS
アクティブなデバッガを使用する前に、どのようにソフトウェアをデバッグしましたか?最近の子供たちは、このような状況でデバッガレスデバッグを学ぶべきです。 – Welbog
WinDBG + SOSはいかがですか?これらのツールを使用して例外を見つけることができます。 –