2016-08-23 6 views
3

私は常にダンプをキャプチャするのに熟練していると思っていましたが、これは私を本当に混乱させました。私は定期的にクラッシュしている.netプロセスを持っています...ネイティブコードでも管理コードでもクラッシュしているかどうか、あるいは例外やサードパーティ製DLLに当たるプロセス自体であるかどうかは分かりません。私が知っているのは、それがクラッシュしているということだけです。私はprocdumpを使ってクラッシュをダンプしようとしていますが、本当に苦労しています。 Iセットアップprocdump次のように:Procdump -e致命的でない例外でダンプを作成

procdump processname.exe -ma -e

問題にもかかわらず...これを行うには、数分以内に、procdumpをダンプして終了を生成します、ですプロセスが実際にクラッシュすることはありませんでした。 -gを追加すると、同じ結果が得られます...数分後、procdumpはダンプと終了を生成します。私がそれをやり直すと、同じことが起こります。私は生成したダンプのいくつかを開いて、彼らはネイティブ例外コンテキストを持っていません。私は、この未処理の例外があると推定

System.Threading.WaitHandle.WaitAny 
System.Runtime.IOThreadTimer+TimerManager.OnWaitCallback 
System.Runtime.IOThreadScheduler+ScheduledOverlapped.IOCallback 
System.Runtime.Fx+IOCompletionThunk.UnhandledExceptionFrame 
System.Threading._IOCompletionCallback.PerformIOCompletionCallback 

:だから、私は、このコールスタックに似た何かを見つけた(私がこれまでに確認されたすべてのダンプに)任意の管理対象スレッドのすべての管理コールスタックをダンプし、 Procdumpがダンプファイルを生成する原因私は少しの検索を行い、UnhandledExceptionEventHandlerオブジェクトを見つけました。だから私はプロセスが未処理の例外をキャプチャするためにそこに何かを持っていなければならないと思う。またはこれはちょうど標準的なSEHのものですか?

いずれにしても、私はこれらの処理されない例外にはまったく関心がありません。クラッシュを引き起こしているものだけを気にします。致命的な例外に対してのみ、ダンプを作成するようにprocdumpに指示する方法はありますか?私はこれが例外をキャッチしないで、プロセスが正常に終了するときにダンプするので、-tは動作するとは思わない。 DebugDiagのようなものに移動する唯一の選択肢はありますか?あなたが実際に未処理の例外に自分をダンプするProcDumpを伝える任意のアドバイス

+1

Procdumpは例外が未処理本当に* *されていることを検出することで、非常に良いではありません。 CLRは、SEH例外を処理し、SEH例外を管理例外に変換します。次にtry/catchで飲み込むには、それが起こります。代わりにDebugDiagの使用を検討してください。 –

+0

Hansさん、ありがとうございました。これは大したことではないだろうと思っていました。私はこれまでにこの問題に遭遇したことはありませんでした。(過去にこの問題を起こさずに.netプロセスを管理しました。私はWERのローカルダンプを使用しても同じ問題が発生するでしょうか? –

+0

WERはショーが本当に終わったときに初めて蹴ってはいけません。 –

答えて

0

を事前に

感謝。

-eプロセスが処理されない例外を検出したときに、ダンプを書き込みます。最初のチャンス例外時にダンプを作成するには、1を含めます。

引用符from here。ちょうどそれを残し、あなたが未処理の例外のダンプを取得することはできません

procdump processname.exe -ma 
+0

私は未処理の例外をダンプしたいのです...問題は、ダンプされた未処理の例外が致命的ではない(つまりクラッシュすることはない)ということです。興味のあるものではありません。 –

関連する問題