2011-11-09 7 views
3

windbgとpsscor2.dll拡張子を使用して.NET 3.5 CLRダンプをデバッグしています。例外が起こった コードは次のようになります。windbgを使用した.NETダンプ解析

try 
{ 
... 
} 
catch 
{ 
... 
} 
catch 
{ 
... 
} 
finally 
{ 
... 
// exception I found in the dump happened here. 
... 
} 

は、[OK]を、!peコマンドを使用して、私は例外を持っているので。これはnull参照例外ですが、問題の本当の原因はtry、またはcatchのいずれかにあり、そこで発生した例外はfinallyブロックでマスクされています。アプリはストレステストでクラッシュしたので、レプロを作成するのは簡単ではないので、ダンプは私の持つすべてです。

だから、すべてのwindbg/.NET内部の教祖の質問。最終的にこのブロックの前に起こった例外をどのようにして得ることができるか考えていますか?私はスタック(有用なもの)(!dsoコマンド)が表示されず、それは多かれ少なかれ私のpsscor2の知識が終わるところです:)。

ありがとうございました。

+3

はありません、その情報は、ビットバケツに落ちました。デバッガを接続してストレステストを実行するのは、非常に簡単な回避策です。最初の例外で停止するようにしてください。 –

+1

残念なことに、ストレステストの実行はここでの選択肢ではありません。これは複雑なインフラストラクチャの一種であり、テストはラボで実行されます。私はレブロ以外何も持っていない。上記の例外はどこでもスタック/ヒープのどこかに残っていることを期待していました。私はまだダンプのどこかにいると思うけど、どこを見つけるのか分からない。コメントありがとう。 – Klark

+0

まだ完了していない場合は、ダンプファイルのための!dae(DumpAllExceptions)と "!Analysis"コマンドを試してください。最後に!analyze -v。たぶんあなたは出力に何かを見ます。 –

答えて

1
  1. windbgアタッチをプロセスに使用して、 "sxe clr"を実行し、ヌル参照の第1チャンス例外を待ってから、!peコマンドを使用してコールスタックをチェックしてください。
  2. "!dumpheap -type Exception"を使用すると、名前に "Exception"が含まれているオブジェクトを見つけて、NullReferenceExceptionオブジェクトを検索し、.foreach(ex {!dumpheap -short -mt}){!pe ex }
  3. あなたがから!DSOパラメータまたはローカル変数を見つけたりすることができます!clrstack -a
関連する問題