VS2012 ソリューションと WPF アプリケーションがあり、リリース モードとデバッグ モードで例外なく実行されますが、それをプロファイリングしようとすると、いくつかの UI アクション (VM を開く、そのビュー コントロールなど) を実行するとアプリケーションがクラッシュします。
アプリケーションがプロファイリング モードで実行されているときに例外をデバッグする方法はありますか?
VS2012 ソリューションと WPF アプリケーションがあり、リリース モードとデバッグ モードで例外なく実行されますが、それをプロファイリングしようとすると、いくつかの UI アクション (VM を開く、そのビュー コントロールなど) を実行するとアプリケーションがクラッシュします。
アプリケーションがプロファイリング モードで実行されているときに例外をデバッグする方法はありますか?
いつでもデバッガーをプロセスにアタッチできます。Debug->Attach to procesを開くだけです。例外で中断したい場合は、Ctrl+Alt+E を押して適切なオプションを選択してください。コードで例外が発生した場合は、選択した dll の pdb をロードしてみてください。
いいえ。プロファイリング中にのみアプリが失敗する理由はあまりありません。通常、作業ディレクトリが異なるなどの単純なものであるため、相対パス名でファイルを開こうとするなどの賢明でないことを行うと、アプリが失敗します。また、見つからないファイルの問題を処理するための try/catch はありません。
注目する必要があるのは、アプリがユーザーのマシンで実行され、このようにクラッシュした場合に何が起こるかです。プロファイラーがなくても、クラッシュした理由がわからないというまったく同じ問題があります。未処理の例外を報告するコードを記述するには、少し時間が必要です。AppDomain.CurrentDomain.UnhandledException イベントのイベント ハンドラーを記述します。e.ExceptionObject.ToString() の値を記録または表示します。これで、適切な例外メッセージと、プログラムが最終的にどのようにクラッシュしたかを正確に示すホーリー スタック トレースが得られました。ほとんどの場合、クラッシュを防ぐためにコードの小さな変更を把握するのに十分です。または、ユーザーの IT スタッフが問題を解決するのを助けるためのより良い方法です。