.NET clr20r3 例外パラメータ P1..P10 の解読 質問する

.NET clr20r3 例外パラメータ P1..P10 の解読 質問する

clr20r3アプリケーションで例外が発生したときにイベント ログに書き込まれるに関連付けられた P1...P10 パラメータの意味を解読しようとしています。

私が今まで見た中で最高の見つけることができたは:

  • 1 位: ホスティングプロセス (例えば w3wp.exe
  • 2位: ホスティングプロセスのバージョン(例えば 6.0.3790.1830
  • P3: ??? (例えば 42435be1
  • P4: 例外が発生したアセンブリ (例えば mrtables.webservice
  • P5: アセンブリバージョン (例えば 2.1.2.0
  • P6: ??? (例えば 4682617f
  • P7: ??? (例えば 129
  • P8: ??? (例えば 50
  • P9: 発生した例外の種類(例えば system.argumentexception
  • P10: ??? (例えば NIL

clr20r3をグーグルで検索何千ものサンプルパラメータ値が提供され、そこからパターンを導き出すことができます。

しかし、私は推測ではなく、パラメータの意味に関するドキュメントを期待しています。


編集:標準的なドキュメントを期待することはできますが、実際には、例外がスローされた場所と、その行がスタック トレースとともに表示されると嬉しいです。

ボーナス読書

ベストアンサー1

P7 と P8 は、P9 例外が発生した場所を見つけるために重要です。P4 を使用して、検索するアセンブリを確認します。ildasm.exe を実行して、そのアセンブリを開きます。ファイル + ダンプ、"トークン値" チェックボックスをオンにして、OK をクリックし、.il ファイルをどこかに保存します。

ファイルをテキスト エディターで開きます。P7 はメソッド トークンを提供します。これは 0x06 で始まり、トークン値 "06000129" を生成します。検索:

.method /*06000129*/

これによりメソッド名が取得されます。そこから検索して .class を見つけると、クラス名が取得されます。

P8 は IL オフセットを提供します。見つかった .method から、例外を発生させた命令の IL_0050 を探します。これをソース コードにマッピングするのは少し難しいですが、おそらく解決できるでしょう。必要に応じて Reflector を使用してください。

一般的に、これらの Watson クラッシュ バケットをリバース エンジニアリングする手間を省くには、のイベント ハンドラーを記述します。例外メッセージとスタック トレースAppDomain.UnhandledExceptionの両方を取得するには、の値をログに記録します。e.ExceptionObject.ToString()

おすすめ記事