7

windbgを使用してミニダンプファイルをデバッグしようとすると、非常に奇妙な問題が発生します。自分のマシンと、ミニダンプが取得されたターゲットマシンでwindbgを実行することの両方でこれを試しましたが、どちらの場合も結果は同じです。

最初に、以下に示すように必要なdllをロードします。シンパスをマイクロソフトシンボルサーバーに設定した場合にも同じ問題が発生することに注意してください。

0:000> .symfix c:\ sos

0:000> .load C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ sos

チェーンをチェックするとすべてが良さそうなので、!peを実行すると、mscordacwksに関するエラーが発生します。これは、私が知る限り、通常、間違ったバージョンの.netFrameworkを使用していることを示しています。しかし、これをターゲットマシンで実行しているので、ここでは実際にはそうではないはずです。

次に、詳細な読み込みを行います

.cordll -ve -u -l

次のエラーメッセージが表示されます

CLRDLL:C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ mscordacwks.dll:4.0.30319.17929 f:8が目的のバージョン4.0.30319.296 f:8と一致しません

私が理解していないのは、windbgが古いバージョンのmscordacwksを探している理由です。.296ビルドはmsシンボルサーバーからダウンロードされるclrのバージョンのようですが、windbgにローカルバージョンを使用するように明示的に指示しました。

ここここで提案されたアプローチを試しましたが、何も機能しません。どんな助けでも大歓迎です。

4

2 に答える 2

9

これは、.NET4.5がインストールされているマシンで.NET4.0ダンプをデバッグしているためです。基盤となるデバッグAPIは4.0と4.5の間で大幅に変更されたため、.NET4.5SOS.dllを使用して.NET4.0ダンプをデバッグすることはできません。私がしていることは、.NET 4.0 SOSをwinextディレクトリにコピーし、.NET4.0ダンプをデバッグするときに明示的にロードすることです。

于 2013-03-07T13:25:09.980 に答える
9

WinDbg x64の手順をどのように試しましたか:クラッシュダンプをデバッグできません-データアクセスDLLを読み込めませんでしたか?

あなたはすることになっています

  1. ソースマシンからmscordacwks.dllをコピーします。
  2. 名前をmscordacwks_AMD64_AMD64_4.0.30319.296.dllに変更します。
  3. このdllをWinDbg.exeのフォルダにドロップします。
  4. デバッグセッションを再初期化します(WinDbgを閉じてから再度開きます)。

次に、WinDbgがそのバージョンの.NET 4のSOSを必要としているというエラーメッセージを受け取る可能性が非常に高く、次のことができます。

  1. ソースマシンからsos.dllをコピーし、C:\ temp\sos.dllに保存します。
  2. WinDbgでは、.loadby sos clrを呼び出す代わりに、.load C:\ temp\sos.dllを使用します。
于 2013-03-11T05:59:45.207 に答える