web-dev-qa-db-ja.com

WinDbgがSOS.dllの読み込みに失敗する

WinDbgを使用して32ビットのマネージアプリケーションをデバッグする必要がありますが、WinDbgはSOS.dll拡張機能のロードを頑固に拒否します。多くのインターネット検索や物事を試した後、私は困惑しています。 WinDbgでアンマネージコードをデバッグした経験がありますが、マネージドでの初めての試みです。

WinDbgにデフォルトのSOS.dllをロードするように指示すると、次のエラーが発生します。

sxe ld clr                <- I wait until the clr has loaded
.loadby sos clr

The call to LoadLibrary(C:\Windows\Microsoft.NET\Framework\v4.0.30319\sos) failed,     Win32 error 0n193
    "%1 is not a valid Win32 application."
Please check your debugger configuration and/or network access.

そして、代わりにSOS.dllを指定しようとすると、別のエラーが表示されます。

.load C:\Windows\Microsoft.NET\Framework\v4.0.30319\sos clr

The call to LoadLibrary(C:\Windows\Microsoft.NET\Framework\v4.0.30319\sos clr) failed, Win32 error 0n126
    "The specified module could not be found."
Please check your debugger configuration and/or network access.

私のセットアップはVM-to-VM over serial接続で、両方のVMはWindows Server 2008 R2 SP1です。 Debugging Tools For Windows(x64)が両方のVMにインストールされています。

注:このソリューションで推奨されているように、x86デバッグツールをx64 CPUにインストールすると表示されます は新しいWindows OSでは可能(必須ではありません)なので、推奨しないでください。インストーラーはエラーで失敗します。

あなたのアイデアを事前に感謝します。

26
mvwhyatt

同じマシンにWinDbgのx86バージョンとx64バージョンの両方をインストールすることが可能です。32ビットの.NETアプリをデバッグする場合は、WinDbg/SOSのx86バージョンを使用する必要があります。エラーメッセージは、SOSの誤ったバージョンをアプリケーションのビット数でロードしようとしていることを示しています。

追加の ガイダンスはこちら があります。

17
Brian Rasmussen

デフォルトでは、インストーラーはシステムにWinDbgの32ビットバージョンと64ビットバージョンの両方をプロンプトなしに配置するようです-間違ったバージョンを実行している可能性はありますか?

WinDbgがインストールされているディレクトリで「x86」ディレクトリを探し、そこに含まれているバージョンのwindbg.exeを実行します。

10
shoebox