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では可能(必須ではありません)なので、推奨しないでください。インストーラーはエラーで失敗します。
あなたのアイデアを事前に感謝します。
同じマシンにWinDbgのx86バージョンとx64バージョンの両方をインストールすることが可能です。32ビットの.NETアプリをデバッグする場合は、WinDbg/SOSのx86バージョンを使用する必要があります。エラーメッセージは、SOSの誤ったバージョンをアプリケーションのビット数でロードしようとしていることを示しています。
追加の ガイダンスはこちら があります。
デフォルトでは、インストーラーはシステムにWinDbgの32ビットバージョンと64ビットバージョンの両方をプロンプトなしに配置するようです-間違ったバージョンを実行している可能性はありますか?
WinDbgがインストールされているディレクトリで「x86」ディレクトリを探し、そこに含まれているバージョンのwindbg.exeを実行します。