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をグーグルで検索何千ものサンプルパラメータ値が提供され、そこからパターンを導き出すことができます。
しかし、私は推測ではなく、パラメータの意味に関するドキュメントを期待しています。
編集:標準的なドキュメントを期待することはできますが、実際には、例外がスローされた場所と、その行がスタック トレースとともに表示されると嬉しいです。
ボーナス読書
- ログに「EventType clr20r3, P1 w3wp.exe」と記録され、アプリケーションがクラッシュする原因となった未処理の例外ですが、詳細は不明です。 (問題の解決方法を求めているのに、私たちはパラメータの意味についての標準的な説明を求めています)
ベストアンサー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()