2

私はこれが何度も尋ねられたことを知っていますが、まあ、私はそれらをすべて読み、問題を解決することができませんでした。

基本的に、AzureでWebロールとして実行されているIIS 7.0x64w3wp.exeプロセスのメモリダンプがあります。複数のダンプがあり、windbgまたはSciTech .NetMemoryProfilerにそれらをロードできません。どちらの場合も、問題は正しいmscordacwks.dllを見つけることのようです。

マシンからx64とx86の両方のmscordacwks.dllを取得しましたが、いずれもロードできませんでした。

したがって、windbgで管理対象スレッドなどを表示したい場合、よくあるエラーが発生します。

0:000> !threads
The version of SOS does not match the version of CLR you are debugging.  Please
load the matching version of SOS for the version of CLR you are debugging.
CLR Version: 4.0.30319.551
SOS Version: 4.0.30319.17929
CLRDLL: Unable to get version info for 'D:\Windows\Microsoft.NET\Framework64\v4.0.30319\mscordacwks.dll', Win32 error 0n87
DBGHELP: C:\Program Files\Debugging Tools for Windows (x64)\sym\mscordacwks_AMD64_AMD64_4.0.30319.551.dll\4F191DB4964000\mscordacwks_AMD64_AMD64_4.0.30319.551.dll - OK
CLRDLL: Loaded DLL C:\Program Files\Debugging Tools for Windows (x64)\sym\mscordacwks_AMD64_AMD64_4.0.30319.551.dll\4F191DB4964000\mscordacwks_AMD64_AMD64_4.0.30319.551.dll
Failed to load data access DLL, 0x80004005
Verify that 1) you have a recent build of the debugger (6.2.14 or newer)
            2) the file mscordacwks.dll that matches your version of clr.dll is 
                in the version directory or on the symbol path
            3) or, if you are debugging a dump file, verify that the file 
                mscordacwks_<arch>_<arch>_<version>.dll is on your symbol path.
            4) you are debugging on supported cross platform architecture as 
                the dump file. For example, an ARM dump file must be debugged
                on an X86 or an ARM machine; an AMD64 dump file must be
                debugged on an AMD64 machine.

だから私はここに2つの奇妙なことがわかります:

  1. WindowsはAzureのD:\ドライブに展開されます(これにより問題が発生する可能性がありますか?)
  2. CLRバージョン:4.0.30319。551、ただしSOSバージョン:4.0.30319。17929

それで、 17929であるSOSバージョンである可能性がありますか?サーバー上のmscordacwks.dllは間違いなく551です。

問題を解決せずに想像できるすべてのコマンドラインを実行しました。

前もって感謝します

4

3 に答える 3

2

MicrosoftのPSSCOR4.dllは、SOS.dllのスーパーセットであり、.NET4.5より前のすべての.NET4フレームワークバージョンで動作します。.NET4.5では機能しないことを明確にしてくれたSteveJohnsonに感謝します。

psscor4.dllはここからダウンロードできます

于 2012-12-18T18:32:49.370 に答える
2

技術的には、デバッグしているランタイムと同じバージョンのSOSを使用することが常に要件です。ただし、通常は最初の3つのバージョンの場所を一致させることで解決できます。このダンプでは、.NET 4.0ですが、SOSバージョンは4.5です。基盤となるデバッグAPIが.NET4.5で完全に変更されたため、これは機能しません。したがって、SOS.dllの適切なバージョンを取得する必要があります。

于 2012-12-15T13:29:42.453 に答える
1

OK、同じボックスのSOS.dllを取得しましたが、これで修正されました。だから、それは誰も投稿のどこにもあなたに言わないことです。

mscordacwks.dllだけでなく、ダンプを生成したマシンのSOS.dllとmscordacwks.dllの両方が必要です。

于 2012-12-14T09:14:02.620 に答える