4

いろいろ検索して試してみましたが、psscor4 が正常に動作しません。

!threadsを呼び出すと、常に取得しています

ThreadStore のリクエストに失敗しました

チェックした項目は以下の通りです。

  • X86 プラットフォーム用にコンパイルされた .NET 4 アプリケーションを使用しています。
  • Windbg バージョン 6.2.9200.16384、X86 バージョンを使用しています
  • Microsoft の最新の psscor4 を使用していますが、正しく読み込まれます。X86バージョンをロードしているので、問題ないはずです
  • シンボルは MS Symbol サーバーから読み込まれます (コマンド.symfix+、次に.reload )
  • .cordllは次を示します。

    CLR DLL の状態: 読み込み済みの DLL C:\Windows\Microsoft.NET\Framework\v4.0.30319\mscordacwks.dll

.loadby sos clr で SOS を使用しようとすると、同じことが起こります

誰かアイデアがありますか?

4

2 に答える 2

6

問題は、.NET 4.5 をデバッグしていることです。PSSCOR4 は .NET 4.5 では動作しません。また、デバッグ マシンで .NET 4.0 を実行していると思われます。これにより、SOS も機能しなくなります。.NET 4.5 をデバッグするには、.NET 4.5 SOS および/または SOSEX (.NET 2.0+ のすべてのバージョンで機能します) が必要です。

于 2013-09-16T12:50:56.173 に答える
1

この問題は、次のいずれかの場合に発生することがわかりました。

  1. プロセスの .NET フレームワークに対して間違ったバージョンの拡張機能を実行しています (!eeversion) - ここで Steve Johnson が述べたように。修正するには、プロセスが使用していた .NET のバージョン (!eeversion) を確認し、対応する正しいバージョンと拡張機能のビット数をダウンロードします。

また

  1. プロセスのメモリ ダンプに対して正しいバージョンの SOS を使用していません。つまり、使用している SOS のバージョンは、ダンプが取得されたマシンの SOS のバージョンとは異なります。これをテストするには、!eeversion の結果を .chain と比較し、SOS バージョンが同じかどうかを確認します。そうでない場合は、WinDbg のシンボル検索パスが正しく設定されていることを確認してから、.symfix に続いて .reload を実行します。

シンボル検索パスは、次のように設定する必要があります。

SRV*C:\SYMBOLS\PUBLIC*http://referencesource.microsoft.com/symbols;SRV*C:\SYMBOLS\PUBLIC*http://msdl.microsoft.com/download/symbols

John Robbins のブログ ( http://wintellect.com/blogs/jrobbins/automatically-load-the-right-sos-for-the-minidump ) に投稿されているソリューションを試すこともできます。

彼のソリューションは、WinDbg バージョン 6.2 以降でのみ機能するようにできました。バージョン 6.12 以下では機能しませんでした。

HTH

于 2014-03-05T22:12:04.210 に答える